ferment.html 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080
  1. <!-- 宣告我們要套用模板 -->
  2. {% extends "base.html" %}
  3. {% block title %}{{ title }}{% endblock %}
  4. {% block script %}
  5. <script>
  6. var status = '{{status}}';
  7. var username = '{{username}}';
  8. $(document).ready(function(){
  9. $("#coffee_title_pc").text('發酵貨櫃');
  10. $("#coffee_title_phone").text('發酵貨櫃');
  11. $('#navbarDropdown_user_pc').text(username);
  12. $('#navbarDropdown_user_phone').text(username);
  13. myrefresh();
  14. });
  15. function myrefresh()
  16. {
  17. $.get('/ferment_auto_data', function (resText) {
  18. var FI = [resText.FI1,resText.FI2];
  19. var F=[resText.F1,resText.F2,resText.F3,resText.F4,resText.F5,resText.F6,resText.F7,resText.F8,resText.F9,resText.F10,resText.F11,resText.F12];
  20. var FO = [resText.FO1,resText.FO2];
  21. for (let i=0; i<2; i++) {
  22. if (FI[i] == 'FI_InputtingBean') {
  23. $("#FI"+parseInt(i+1)+"_bar").css("background-color", "MediumSeaGreen")
  24. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 入豆中")
  25. } else if (FI[i] == 'FI_Waiting') {
  26. $("#FI"+parseInt(i+1)+"_bar").css("background-color", "lightgray")
  27. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 空桶等待")
  28. } else if (FI[i] == 'FI_OutputtingBean') {
  29. $("#FI"+parseInt(i+1)+"_bar").css("background-color", "MediumSeaGreen")
  30. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 可出豆")
  31. } else if (FI[i] == 'FI_Stand_by') {
  32. $("#FI"+parseInt(i+1)+"_bar").css("background-color", "HotPink")
  33. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 待命")
  34. } else {
  35. console.log('pass')
  36. }
  37. }
  38. for (let i=0; i<12; i++) {
  39. if (F[i] == 'F_InputtingBean') {
  40. $("#F"+parseInt(i+1)+"_bar").css("background-color", "MediumSeaGreen")
  41. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆中")
  42. } else if (F[i] == 'F_InputtingBean_Pause') {
  43. $("#F"+parseInt(i+1)+"_bar").css("background-color", "MediumSeaGreen")
  44. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆暫停")
  45. } else if (F[i] == 'F_InputtingBean_Finish') {
  46. $("#F"+parseInt(i+1)+"_bar").css("background-color", "MediumSeaGreen")
  47. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆完成")
  48. } else if (F[i] == 'F_InputtingWater') {
  49. $("#F"+parseInt(i+1)+"_bar").css("background-color", "DeepSkyBlue")
  50. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 內外桶入水中")
  51. } else if (F[i] == 'F_Waiting') {
  52. $("#F"+parseInt(i+1)+"_bar").css("background-color", "lightgray")
  53. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 空桶等待")
  54. } else if (F[i] == 'F_Cleaning') {
  55. $("#F"+parseInt(i+1)+"_bar").css("background-color", "plum")
  56. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 清洗中")
  57. } else if (F[i] == 'F_Fermenting') {
  58. $("#F"+parseInt(i+1)+"_bar").css("background-color", "NavajoWhite")
  59. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 發酵中")
  60. } else if (F[i] == 'F_OutputtingWater') {
  61. $("#F"+parseInt(i+1)+"_bar").css("background-color", "DeepSkyBlue")
  62. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 內桶排水中")
  63. } else if (F[i] == 'F_OutputtingBean') {
  64. $("#F"+parseInt(i+1)+"_bar").css("background-color", "MediumSeaGreen")
  65. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 可出豆")
  66. } else if (F[i] == 'F_Warning') {
  67. $("#F"+parseInt(i+1)+"_bar").css("background-color", "crimson")
  68. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 發生錯誤")
  69. $("#F"+parseInt(i+1)+"_status").css("color", "crimson")
  70. } else if (F[i] == 'F_Stand_by') {
  71. $("#F"+parseInt(i+1)+"_bar").css("background-color", "HotPink")
  72. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 待命中")
  73. } else {
  74. console.log('pass')
  75. }
  76. }
  77. for (let i=0; i<2; i++) {
  78. if (FO[i] == 'FO_InputtingBean') {
  79. $("#FO"+parseInt(i+1)+"_bar").css("background-color", "MediumSeaGreen")
  80. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 入豆中")
  81. } else if (FO[i] == 'FO_Waiting') {
  82. $("#FO"+parseInt(i+1)+"_bar").css("background-color", "lightgray")
  83. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 空桶等待")
  84. } else if (FO[i] == 'FO_OutputtingBean') {
  85. $("#FO"+parseInt(i+1)+"_bar").css("background-color", "MediumSeaGreen")
  86. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 可出豆")
  87. } else if (FO[i] == 'FO_Stand_by') {
  88. $("#FO"+parseInt(i+1)+"_bar").css("background-color", "HotPink")
  89. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 待命")
  90. } else {
  91. console.log('pass')
  92. }
  93. }
  94. },'json');
  95. }
  96. setInterval('myrefresh()',1000);
  97. </script>
  98. {% endblock %}
  99. {% block style %}
  100. <style>
  101. /* 各桶槽狀態大小的共同 CSS */
  102. .div_DryTank_position {
  103. text-align: center;
  104. font-weight: bold;
  105. border: 0px aquamarine solid;
  106. }
  107. .td-clickable:hover {
  108. background-color: lavender;
  109. border: 2px Gray solid;
  110. }
  111. /* 桶槽狀態顯示的顏色條 */
  112. .div_DryTank_Status {
  113. height: 20px;
  114. border-style: solid;
  115. border-color: whitesmoke;
  116. background-color: black;
  117. }
  118. .footer{
  119. position: absolute;
  120. bottom: 0px;
  121. width: 100%;
  122. background-color: #eee;
  123. text-align: center;
  124. }
  125. /* 致動器狀態的圈圈 */
  126. .actuator_status {
  127. width: 18px;
  128. height: 18px;
  129. background-color:black;
  130. border-radius: 50%;
  131. }
  132. /* 狀態外框的 CSS */
  133. .table_css {
  134. border: 0px lightsteelblue solid;
  135. margin-right: auto;
  136. margin-left: auto;
  137. text-align: center;
  138. margin-top: 5px;
  139. width: 80%;
  140. }
  141. </style>
  142. {% endblock %}
  143. {% block main %}
  144. <!-- 發酵槽互動視窗(模态框) -->
  145. <div class="modal fade" id="F_Modal">
  146. <div class="modal-dialog modal-dialog-centered" style="width: 410px;">
  147. <div class="modal-content">
  148. <!-- 互動視窗 標題 -->
  149. <div class="modal-header">
  150. <h4 id="Modal_title" class="modal-title">發酵槽 F1 狀態</h4>
  151. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  152. </div>
  153. <!-- 互動視窗 內容 -->
  154. <div class="modal-body">
  155. <table style="border:0px gray solid; width: 100%;" cellpadding="3">
  156. <!--<table style="border:0px gray solid;-->
  157. <tr>
  158. <td><strong><a id="actuator_link" href="/ferment_container/1">致動器狀態</a></strong></td>
  159. <td><strong><a id="sensor_link" href="/ferment_container/1">感測器狀態</a></strong></td>
  160. </tr>
  161. <tr>
  162. <td style="vertical-align:text-top;">
  163. <table style="border:0px gray solid;" cellpadding="3">
  164. <!--font-size:12px; -->
  165. <tr>
  166. <td>
  167. <div id="tank_vacuum_status"
  168. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  169. </div>
  170. </td>
  171. <td>
  172. <a id="Vacuum" href="">真空吸料機</a>
  173. <!--<span id="tank_vacuum_t_status"></span>-->
  174. </td>
  175. </tr>
  176. <tr>
  177. <td>
  178. <div id="tank_threewayvalve_input_status"
  179. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  180. </div>
  181. </td>
  182. <td>
  183. <a id="ThreeWayValveInput" href="">入料三通閥</a>
  184. <!--<span id="tank_threewayvalve_input_t_status"></span>-->
  185. </td>
  186. </tr>
  187. <tr>
  188. <td>
  189. <div id="solenoid_tank_pump_status"
  190. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  191. </div>
  192. </td>
  193. <td>
  194. <a id="SolenoidTankPump" href="">逆洗幫浦電磁閥</a>
  195. </td>
  196. </tr>
  197. <tr>
  198. <td>
  199. <div id="outer_solenoid_water_status"
  200. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  201. </div>
  202. </td>
  203. <td>
  204. <a id="SolenoidOuterWater" href="">保溫夾層進水電磁閥</a>
  205. <!--<span id="outer_solenoid_water_t_status"></span>-->
  206. </td>
  207. </tr>
  208. <tr>
  209. <td>
  210. <div id="tank_solenoid_water_in_status"
  211. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  212. </div>
  213. </td>
  214. <td>
  215. <a id="SolenoidWaterIn" href="">清水入水電磁閥</a>
  216. <!--<span id="tank_solenoid_water_in_t_status"></span>-->
  217. </td>
  218. </tr>
  219. <tr>
  220. <td>
  221. <div id="tank_solenoid_water_out_status"
  222. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  223. </div>
  224. </td>
  225. <td>
  226. <a id="SolenoidWaterOut" href="">排水廢水電磁閥</a>
  227. <!--<span id="tank_solenoid_water_in_t_status"></span>-->
  228. </td>
  229. </tr>
  230. <tr>
  231. <td>
  232. <div id="tank_pump_sensor_status"
  233. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  234. </div>
  235. </td>
  236. <td>
  237. <a id="PumpSensor" href="">感測器抽水雙核隔膜泵</a>
  238. <!--<span id="tank_pump_sensor_t_status"></span>-->
  239. </td>
  240. </tr>
  241. <!-- <tr>
  242. <td>
  243. <div id="tank_threewayvalve_bean_status"
  244. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  245. </div>
  246. </td>
  247. <td>
  248. <a id="ThreeWayValveBean" href="">感測模組下豆三通閥</a>
  249. <span id="tank_threewayvalve_bean_t_status"></span>
  250. </td>
  251. </tr> -->
  252. <tr>
  253. <td>
  254. <div id="outer_threewayvalve_float_status"
  255. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  256. </div>
  257. </td>
  258. <td>
  259. <a id="ThreeWayValveFloat" href="">外桶浮選三通閥</a>
  260. <!--<span id="outer_threewayvalve_float_t_status"></span>-->
  261. </td>
  262. </tr>
  263. <tr>
  264. <td>
  265. <div id="tank_solenoid_disinfect_status"
  266. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  267. </div>
  268. </td>
  269. <td>
  270. <a id="SolenoidDisinfect" href="">桶內消毒電磁閥</a>
  271. <!--<span id="tank_solenoid_disinfect_t_status"></span>-->
  272. </td>
  273. </tr>
  274. <tr>
  275. <td>
  276. <div id="tank_motor_status"
  277. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  278. </div>
  279. </td>
  280. <td>
  281. <a id="Motor" href="">馬達</a>
  282. <!--<span id="tank_motor_t_status"></span>-->
  283. </td>
  284. </tr>
  285. <tr>
  286. <td>
  287. <div id="tank_heater1_status"
  288. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  289. </div>
  290. </td>
  291. <td>
  292. <a id="Heater1" href="">加熱器 1</a>
  293. <!--<span id="tank_heater1_t_status"></span>-->
  294. </td>
  295. </tr>
  296. <tr>
  297. <td>
  298. <div id="tank_heater2_status"
  299. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  300. </div>
  301. </td>
  302. <td>
  303. <a id="Heater2" href="">加熱器 2</a>
  304. <!--<span id="tank_heater2_t_status"></span>-->
  305. </td>
  306. </tr>
  307. <tr>
  308. <td>
  309. <div id="tank_diskvalve_status"
  310. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  311. </div>
  312. </td>
  313. <td>
  314. <a id="DiskValve" href="">蝴蝶閥</a>
  315. <!--<span id="tank_diskvalve_t_status"></span>-->
  316. </td>
  317. </tr>
  318. <tr>
  319. <td>
  320. <div id="Warning_Light_status"
  321. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  322. </div>
  323. </td>
  324. <td>
  325. <a id="Warning_Light" href="">警示燈</a>
  326. <!--<span id="tank_diskvalve_t_status"></span>-->
  327. </td>
  328. </tr>
  329. </table>
  330. </td>
  331. <td style="vertical-align:text-top;">
  332. <table style="border:0px gray solid;" cellpadding="3">
  333. <tr>
  334. <td>
  335. <a id="UltraSonic" href="">水位/生豆高度</a>
  336. </td>
  337. <td>
  338. <span id="UltraSonic_t_status"></span>
  339. </td>
  340. </tr>
  341. <tr>
  342. <td>
  343. <a id="motorEncoder" href="">馬達編碼器</a>
  344. </td>
  345. <td>
  346. <span id="motorEncoder_t_status"></span>
  347. </td>
  348. </tr>
  349. <tr>
  350. <td>
  351. <a id="butterflyvalve" href="">蝴蝶閥編碼器</a>
  352. </td>
  353. <td>
  354. <span id="butterflyvalve_status"></span>
  355. </td>
  356. </tr>
  357. <tr>
  358. <td>
  359. <a id="SHT11_Temp" href="">溫度</a>
  360. </td>
  361. <td>
  362. <span id="SHT11_Temp_t_status"></span>
  363. </td>
  364. </tr>
  365. <tr>
  366. <td>
  367. <a id="SHT11_Humidity" href="">濕度</a>
  368. </td>
  369. <td>
  370. <span id="SHT11_Humidity_t_status"></span>
  371. </td>
  372. </tr>
  373. <tr>
  374. <td>
  375. <a id="CO2" href="">二氧化碳</a>
  376. </td>
  377. <td>
  378. <span id="CO2_t_status"></span>
  379. </td>
  380. </tr>
  381. <tr>
  382. <td>
  383. <a id="PA" href="">大氣壓力</a>
  384. </td>
  385. <td>
  386. <span id="PA_t_status"></span>
  387. </td>
  388. </tr>
  389. <tr>
  390. <td>
  391. <a id="PH" href="">水質酸鹼度(PH)</a>
  392. </td>
  393. <td>
  394. <span id="PH_t_status"></span>
  395. </td>
  396. </tr>
  397. <tr>
  398. <td>
  399. <a id="ORP" href="">水質氧化還原電位(ORP)</a>
  400. </td>
  401. <td>
  402. <span id="ORP_t_status"></span>
  403. </td>
  404. </tr>
  405. <tr>
  406. <td>
  407. <a id="DO" href="">水質溶氧量(DO)</a>
  408. </td>
  409. <td>
  410. <span id="DO_t_status"></span>
  411. </td>
  412. </tr>
  413. <tr>
  414. <td>
  415. <a id="EC" href="">水質導電度(EC)</a>
  416. </td>
  417. <td>
  418. <span id="EC_t_status"></span>
  419. </td>
  420. </tr>
  421. <tr>
  422. <td>
  423. <a id="WaterLevel" href="">保溫夾層水位</a>
  424. </td>
  425. <td>
  426. <!-- 滿 / 未滿 -->
  427. <span id="WaterLevel_t_status"></span>
  428. </td>
  429. </tr>
  430. <tr>
  431. <td>
  432. <a id="camera_ferment_tid" href="/video"><strong>攝影機畫面</strong></a>
  433. </td>
  434. </tr>
  435. <tr>
  436. <td><strong><a id="F_set" href="">自動化設定</a></strong></td>
  437. </tr>
  438. </table>
  439. </td>
  440. </tr>
  441. </table>
  442. </div>
  443. </div>
  444. </div>
  445. </div>
  446. <!-- 發酵槽入料儲豆槽互動視窗(模态框) -->
  447. <div class="modal fade" id="FI_Modal">
  448. <div class="modal-dialog modal-dialog-centered" style="width: 410px;">
  449. <div class="modal-content">
  450. <!-- 互動視窗 標題 -->
  451. <div class="modal-header">
  452. <h4 id="Modal_title_input" class="modal-title">發酵入料儲豆槽 FI1 狀態</h4>
  453. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  454. </div>
  455. <!-- 互動視窗 內容 -->
  456. <div class="modal-body">
  457. <table style="border:0px gray solid; width: 100%;" cellpadding="3">
  458. <!--<table style="border:0px gray solid;-->
  459. <tr>
  460. <td><strong><a id="actuator_link_input"href="" >致動器狀態</a></strong></td>
  461. <td><strong><a id="sensor_link_input" href="">感測器狀態</a></strong></td>
  462. </tr>
  463. <tr>
  464. <td style="vertical-align:text-top;">
  465. <table style="border:0px gray solid;" cellpadding="3">
  466. <!--font-size:12px; -->
  467. <tr>
  468. <td>
  469. <div id="intput_vacuum_status"
  470. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  471. </div>
  472. </td>
  473. <td>
  474. <a id="input_Vacuum"href="">真空吸料機</a>
  475. </td>
  476. </tr>
  477. </table>
  478. </td>
  479. <td style="vertical-align:text-top;">
  480. <table style="border:0px gray solid;" cellpadding="3">
  481. <tr>
  482. <td>
  483. <a id="FI_UltraSonic"href="">咖啡生豆高度</a>
  484. </td>
  485. <td>
  486. <span id="FI_UltraSonic_status"></span>
  487. </td>
  488. </tr>
  489. <tr>
  490. <td>
  491. <a id="FI_camera_ferment_tid"href=""><strong>攝影機畫面</strong></a>
  492. </td>
  493. </tr>
  494. <tr>
  495. <td><strong><a id="FI_set" href="">自動化設定</a></strong></td>
  496. </tr>
  497. </table>
  498. </td>
  499. </tr>
  500. </table>
  501. </div>
  502. </div>
  503. </div>
  504. </div>
  505. <!-- 發酵槽出料儲豆槽互動視窗(模态框) -->
  506. <div class="modal fade" id="FO_Modal">
  507. <div class="modal-dialog modal-dialog-centered" style="width: 410px;">
  508. <div class="modal-content">
  509. <!-- 互動視窗 標題 -->
  510. <div class="modal-header">
  511. <h4 id="Modal_title_output" class="modal-title">發酵出料儲豆槽 FO1 狀態</h4>
  512. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  513. </div>
  514. <!-- 互動視窗 內容 -->
  515. <div class="modal-body">
  516. <table style="border:0px gray solid; width: 100%;" cellpadding="3">
  517. <!--<table style="border:0px gray solid;-->
  518. <tr>
  519. <td><strong><a id="actuator_link_output" >致動器狀態</a></strong></td>
  520. <td><strong><a id="sensor_link_output" >感測器狀態</a></strong></td>
  521. </tr>
  522. <tr>
  523. <td style="vertical-align:text-top;">
  524. <table style="border:0px gray solid;" cellpadding="3">
  525. <!--font-size:12px; -->
  526. <tr>
  527. <td>
  528. <div id="output_vacuum_status"
  529. style="width: 18px; height: 18px; background-color:black; border-radius: 50%;">
  530. </div>
  531. </td>
  532. <td>
  533. <a id="output_Vacuum">真空吸料機</a>
  534. </td>
  535. </tr>
  536. </table>
  537. </td>
  538. <td style="vertical-align:text-top;">
  539. <table style="border:0px gray solid;" cellpadding="3">
  540. <tr>
  541. <td>
  542. <a id="FO_UltraSonic">咖啡生豆高度</a>
  543. </td>
  544. <td>
  545. <span id="FO_UltraSonic_status"></span>
  546. </td>
  547. </tr>
  548. <tr>
  549. <td>
  550. <a id="FO_camera_ferment_tid"href=""><strong>攝影機畫面</strong></a>
  551. </td>
  552. </tr>
  553. <tr>
  554. <td><strong><a id="FO_set" href="">自動化設定</a></strong></td>
  555. </tr>
  556. </table>
  557. </td>
  558. </tr>
  559. </table>
  560. </div>
  561. </div>
  562. </div>
  563. </div>
  564. </div>
  565. <div class="album py-5 bg-light">
  566. <div class="container">
  567. <div class="row row-cols-1 row-cols-sm-1 row-cols-md-1 g-3">
  568. <div class="col">
  569. <div class="card shadow-sm">
  570. <div class="card-body">
  571. <div class="d-flex justify-content-between align-items-center">
  572. <table class="table_css" cellpadding="6" border="1" style="width: 100%" >
  573. <tr>
  574. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  575. <div id="FI1" tabindex="0" class="div_DryTank_position" role="button">
  576. <span id="FI1_status" class="demo_status_css">FI1 status</span>
  577. </div>
  578. </td>
  579. <td style="width: 10px; font-weight: 900; border: lightsteelblue 1px solid;">
  580. 入料
  581. </td>
  582. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  583. <div id="F1" tabindex="0" class="div_DryTank_position" role="button">
  584. <span id="F1_status" class="demo_status_css">F1 status</span>
  585. </div>
  586. </td>
  587. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  588. <div id="F2" tabindex="0" class="div_DryTank_position" role="button">
  589. <span id="F2_status" class="demo_status_css">F2 status</span>
  590. </div>
  591. </td>
  592. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  593. <div id="F3" tabindex="0" class="div_DryTank_position" role="button">
  594. <span id="F3_status" class="demo_status_css">F3 status</span>
  595. </div>
  596. </td>
  597. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  598. <div id="F4" tabindex="0" class="div_DryTank_position" role="button">
  599. <span id="F4_status" class="demo_status_css">F4 status</span>
  600. </div>
  601. </td>
  602. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  603. <div id="F5" tabindex="0" class="div_DryTank_position" role="button">
  604. <span id="F5_status" class="demo_status_css">F5 status</span>
  605. </div>
  606. </td>
  607. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  608. <div id="F6" tabindex="0" class="div_DryTank_position" role="button">
  609. <span id="F6_status" class="demo_status_css">F6 status</span>
  610. </div>
  611. </td>
  612. <td style="width: 10px; font-weight: 900; border: lightsteelblue 1px solid;">
  613. 出料
  614. </td>
  615. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  616. <div id="FO1" tabindex="0" class="div_DryTank_position" role="button">
  617. <span id="FO1_status" class="demo_status_css">FO1 status</span>
  618. </div>
  619. </td>
  620. </tr>
  621. <tr>
  622. <td style="border: lightsteelblue 1px solid;">
  623. <center><div id="FI1_bar" class="div_DryTank_Status"></div></center>
  624. </td>
  625. <td style="border: lightsteelblue 1px solid;">
  626. </td>
  627. <td style="border: lightsteelblue 1px solid;">
  628. <center><div id="F1_bar" class="div_DryTank_Status"></div></center>
  629. </td>
  630. <td style="border: lightsteelblue 1px solid;">
  631. <center><div id="F2_bar" class="div_DryTank_Status"></div></center>
  632. </td>
  633. <td style="border: lightsteelblue 1px solid;">
  634. <center><div id="F3_bar" class="div_DryTank_Status"></div></center>
  635. </td>
  636. <td style="border: lightsteelblue 1px solid;">
  637. <center><div id="F4_bar" class="div_DryTank_Status"></div></center>
  638. </td>
  639. <td style="border: lightsteelblue 1px solid;">
  640. <center><div id="F5_bar" class="div_DryTank_Status"></div></center>
  641. </td>
  642. <td style="border: lightsteelblue 1px solid;">
  643. <center><div id="F6_bar" class="div_DryTank_Status"></div></center>
  644. </td>
  645. <td style="border: lightsteelblue 1px solid;">
  646. </td>
  647. <td style="border: lightsteelblue 1px solid;">
  648. <center><div id="FO1_bar" class="div_DryTank_Status"></div></center>
  649. </td>
  650. </tr>
  651. </table>
  652. </div>
  653. </div>
  654. <img src="../static/img/web_ferment_container.png">
  655. <div class="card-body">
  656. <div class="d-flex justify-content-between align-items-center">
  657. <table class="table_css" cellpadding="6" border="1" style="width: 100%">
  658. <tr>
  659. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  660. <div id="FI2" tabindex="0" class="div_DryTank_position" role="button">
  661. <span id="FI2_status" class="demo_status_css">FI2 status</span>
  662. </div>
  663. </td>
  664. <td style="width: 10px; font-weight: 900; border: lightsteelblue 1px solid;" >
  665. 入料
  666. </td>
  667. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  668. <div id="F7" tabindex="0" class="div_DryTank_position" role="button">
  669. <span id="F7_status" class="demo_status_css">F7 status</span>
  670. </div>
  671. </td>
  672. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  673. <div id="F8" tabindex="0" class="div_DryTank_position" role="button">
  674. <span id="F8_status" class="demo_status_css">F8 status</span>
  675. </div>
  676. </td>
  677. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  678. <div id="F9" tabindex="0" class="div_DryTank_position" role="button">
  679. <span id="F9_status" class="demo_status_css">F9 status</span>
  680. </div>
  681. </td>
  682. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  683. <div id="F10" tabindex="0" class="div_DryTank_position" role="button">
  684. <span id="F10_status" class="demo_status_css">F10 status</span>
  685. </div>
  686. </td>
  687. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  688. <div id="F11" tabindex="0" class="div_DryTank_position" role="button">
  689. <span id="F11_status" class="demo_status_css">F11 status</span>
  690. </div>
  691. </td>
  692. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  693. <div id="F12" tabindex="0" class="div_DryTank_position" role="button">
  694. <span id="F12_status" class="demo_status_css">F12 status</span>
  695. </div>
  696. </td>
  697. <td style="width: 10px; font-weight: 900; border: lightsteelblue 1px solid;">
  698. 出料
  699. </td>
  700. <td class="td-clickable" width="12%" style="border: lightsteelblue 1px solid;">
  701. <div id="FO2" tabindex="0" class="div_DryTank_position" role="button">
  702. <span id="FO2_status" class="demo_status_css">FO2 status</span>
  703. </div>
  704. </td>
  705. </tr>
  706. <tr>
  707. <td style="border: lightsteelblue 1px solid;">
  708. <center><div id="FI2_bar" class="div_DryTank_Status"></div></center>
  709. </td>
  710. <td style="border: lightsteelblue 1px solid;">
  711. </td>
  712. <td style="border: lightsteelblue 1px solid;">
  713. <center><div id="F7_bar" class="div_DryTank_Status"></div></center>
  714. </td>
  715. <td style="border: lightsteelblue 1px solid;">
  716. <center><div id="F8_bar" class="div_DryTank_Status"></div></center>
  717. </td>
  718. <td style="border: lightsteelblue 1px solid;">
  719. <center><div id="F9_bar" class="div_DryTank_Status"></div></center>
  720. </td>
  721. <td style="border: lightsteelblue 1px solid;">
  722. <center><div id="F10_bar" class="div_DryTank_Status"></div></center>
  723. </td>
  724. <td style="border: lightsteelblue 1px solid;">
  725. <center><div id="F11_bar" class="div_DryTank_Status"></div></center>
  726. </td>
  727. <td style="border: lightsteelblue 1px solid;">
  728. <center><div id="F12_bar" class="div_DryTank_Status"></div></center>
  729. </td>
  730. <td style="border: lightsteelblue 1px solid;">
  731. </td>
  732. <td style="border: lightsteelblue 1px solid;">
  733. <center><div id="FO2_bar" class="div_DryTank_Status"></div></center>
  734. </td>
  735. </tr>
  736. </table>
  737. </div>
  738. </div>
  739. </div>
  740. </div>
  741. </div>
  742. </div>
  743. </div>
  744. {% endblock %}
  745. {% block script2 %}
  746. <script>
  747. /*
  748. var button_F1 = document.getElementById('F1');
  749. button_F1.addEventListener('click', showTankDetail);
  750. //var button_F2 = document.getElementById('F2');
  751. //button_F2.addEventListener('click', showTankDetail);
  752. var tank_num = 0;
  753. function showTankDetail() {
  754. // 打開模態框
  755. $('#Modal').modal('show');
  756. };
  757. */
  758. function update_data_F(ftid) {
  759. $.get('/loading/F' + ftid, '', function (res) {
  760. if (res.vacuum == 0) {
  761. $("#tank_vacuum_status").css("background-color", "#C0C0C0")
  762. } else if (res.vacuum == 1) {
  763. $("#tank_vacuum_status").css("background-color", "forestgreen")
  764. } else { $("#tank_vacuum_status").css("background-color", "crimson") }
  765. if (res.threewayvalve_input == 0) {
  766. $("#tank_threewayvalve_input_status").css("background-color", "#C0C0C0")
  767. } else if (res.threewayvalve_input == 1) {
  768. $("#tank_threewayvalve_input_status").css("background-color", "forestgreen")
  769. } else { $("#tank_threewayvalve_input_status").css("background-color", "crimson") }
  770. if (res.diskvalve == 0) {
  771. $("#tank_diskvalve_status").css("background-color", "#C0C0C0")
  772. } else if (res.diskvalve == 1) {
  773. $("#tank_diskvalve_status").css("background-color", "forestgreen")
  774. } else { $("#tank_diskvalve_status").css("background-color", "crimson") }
  775. if (res.solenoid_tank_pump == 0) {
  776. $("#solenoid_tank_pump_status").css("background-color", "#C0C0C0")
  777. } else if (res.solenoid_tank_pump == 1) {
  778. $("#tank_solenoid_water_total_status").css("background-color", "forestgreen")
  779. } else { $("#solenoid_tank_pump_status").css("background-color", "crimson") }
  780. if (res.solenoid_disinfect == 0) {
  781. $("#tank_solenoid_disinfect_status").css("background-color", "#C0C0C0")
  782. } else if (res.solenoid_disinfect == 1) {
  783. $("#tank_solenoid_disinfect_status").css("background-color", "forestgreen")
  784. } else { $("#tank_solenoid_disinfect_status").css("background-color", "crimson") }
  785. if (res.solenoid_outer_water == 0) {
  786. $("#outer_solenoid_water_status").css("background-color", "#C0C0C0")
  787. } else if (res.solenoid_outer_water == 1) {
  788. $("#outer_solenoid_water_status").css("background-color", "forestgreen")
  789. } else { $("#outer_solenoid_water_status").css("background-color", "crimson") }
  790. if (res.solenoid_water_in == 0) {
  791. $("#tank_solenoid_water_in_status").css("background-color", "#C0C0C0")
  792. } else if (res.solenoid_water_in == 1) {
  793. $("#tank_solenoid_water_in_status").css("background-color", "forestgreen")
  794. } else { $("#tank_solenoid_water_in_status").css("background-color", "crimson") }
  795. if (res.solenoid_water_out == 0) {
  796. $("#tank_solenoid_water_out_status").css("background-color", "#C0C0C0")
  797. } else if (res.solenoid_water_out == 1) {
  798. $("#tank_solenoid_water_out_status").css("background-color", "forestgreen")
  799. } else { $("#tank_solenoid_water_out_status").css("background-color", "crimson") }
  800. if (res.pump_sensor == 0) {
  801. $("#tank_pump_sensor_status").css("background-color", "#C0C0C0")
  802. } else if (res.pump_sensor == 1) {
  803. $("#tank_pump_sensor_status").css("background-color", "forestgreen")
  804. } else { $("#tank_pump_sensor_status").css("background-color", "crimson") }
  805. if (res.threewayvalve_outer_float == 0) {
  806. $("#outer_threewayvalve_float_status").css("background-color", "#C0C0C0")
  807. } else if (res.threewayvalve_outer_float == 1) {
  808. $("#outer_threewayvalve_float_status").css("background-color", "forestgreen")
  809. } else { $("#outer_threewayvalve_float_status").css("background-color", "crimson") }
  810. if (res.motor == 0) {
  811. $("#tank_motor_status").css("background-color", "#C0C0C0")
  812. } else if (res.motor == 1) {
  813. $("#tank_motor_status").css("background-color", "forestgreen")
  814. } else { $("#tank_motor_status").css("background-color", "crimson") }
  815. if (res.heater1 == 0) {
  816. $("#tank_heater1_status").css("background-color", "#C0C0C0")
  817. } else if (res.heater1 == 1) {
  818. $("#tank_heater1_status").css("background-color", "forestgreen")
  819. } else { $("#tank_heater1_status").css("background-color", "crimson") }
  820. if (res.heater2 == 0) {
  821. $("#tank_heater2_status").css("background-color", "#C0C0C0")
  822. } else if (res.heater2 == 1) {
  823. $("#tank_heater2_status").css("background-color", "forestgreen")
  824. } else { $("#tank_heater2_status").css("background-color", "crimson") }
  825. if (res.warning_light == 0) {
  826. $("#Warning_Light_status").css("background-color", "#C0C0C0")
  827. } else if (res.warning_light == 1) {
  828. $("#Warning_Light_status").css("background-color", "forestgreen")
  829. } else { $("#Warning_Light_status").css("background-color", "crimson") }
  830. $("#UltraSonic_t_status").text(res.UltraSonic);
  831. $("#motorEncoder_t_status").text(res.motorEncoder)
  832. $("#SHT11_Temp_t_status").text(res.SHT11_Temp);
  833. $("#SHT11_Humidity_t_status").text(res.SHT11_Humidity);
  834. $("#CO2_t_status").text(res.CO2);
  835. $("#PH_t_status").text(res.PH);
  836. $("#ORP_t_status").text(res.ORP);
  837. $("#DO_t_status").text(res.DO);
  838. $("#EC_t_status").text(res.EC);
  839. $("#PA_t_status").text(res.PA);
  840. $("#butterflyvalve_status").text(res.butterflyvalve);
  841. $("#WaterLevel_t_status").text(res.WaterLevel);
  842. if (res.WaterLevel == 0) {
  843. $("#WaterLevel_t_status").text("未滿");
  844. } else if (res.WaterLevel == 1) {
  845. $("#WaterLevel_t_status").text("滿");}
  846. }, 'json');
  847. $('#Modal_title').text("發酵槽 F" + ftid + " 狀態")
  848. if (status == 2) {
  849. $('#actuator_link').attr("title", "該使用者無修改權限")
  850. $('#sensor_link').attr("title", "該使用者無修改權限")
  851. $('#Vacuum').attr("title", "該使用者無修改權限")
  852. $('#ThreeWayValveInput').attr("title", "該使用者無修改權限")
  853. $('#SolenoidWaterTotal').attr("title", "該使用者無修改權限")
  854. $('#SolenoidOuterWater').attr("title", "該使用者無修改權限")
  855. $('#SolenoidWaterIn').attr("title", "該使用者無修改權限")
  856. $('#PumpSensor').attr("title", "該使用者無修改權限")
  857. $('#ThreeWayValveBean').attr("title", "該使用者無修改權限")
  858. $('#ThreeWayValveFloat').attr("title", "該使用者無修改權限")
  859. $('#SolenoidDisinfect').attr("title", "該使用者無修改權限")
  860. $('#Motor').attr("title", "該使用者無修改權限")
  861. $('#Heater1').attr("title", "該使用者無修改權限")
  862. $('#Heater2').attr("title", "該使用者無修改權限")
  863. $('#TempEnable').attr("title", "該使用者無修改權限")
  864. $('#temp').attr("title", "該使用者無修改權限")
  865. $('#DiskValve').attr("title", "該使用者無修改權限")
  866. } else if ( (status == 0) || (status == 1) ) {
  867. $('#actuator_link').attr("href", "/ferment_container_tank/" + ftid)
  868. $('#sensor_link').attr("href", "/ferment_container_tank/" + ftid)
  869. $('#Vacuum').attr("href", "/ctrl_F_Vacuum/" + ftid)
  870. $('#ThreeWayValveInput').attr("href", "/ctrl_F_ThreeWayValveInput/" + ftid)
  871. $('#SolenoidWaterTotal').attr("href", "/ctrl_F_SolenoidWaterTotal/" + ftid)
  872. $('#SolenoidOuterWater').attr("href", "/ctrl_F_SolenoidOuterWater/" + ftid)
  873. $('#SolenoidWaterIn').attr("href", "/ctrl_F_SolenoidWaterIn/" + ftid)
  874. $('#PumpSensor').attr("href", "/ctrl_F_PumpSensor/" + ftid)
  875. $('#ThreeWayValveBean').attr("href", "/ctrl_F_ThreeWayValveBean/" + ftid)
  876. $('#ThreeWayValveFloat').attr("href", "/ctrl_F_ThreeWayValveFloat/" + ftid)
  877. $('#SolenoidDisinfect').attr("href", "/ctrl_F_SolenoidDisinfect/" + ftid)
  878. $('#Motor').attr("href", "/ctrl_F_Motor/" + ftid)
  879. $('#Heater1').attr("href", "/ctrl_F_Heater1/" + ftid)
  880. $('#Heater2').attr("href", "/ctrl_F_Heater2/" + ftid)
  881. $('#TempEnable').attr("href", "/ctrl_F_TempEnable/" + ftid)
  882. $('#temp').attr("href", "/ctrl_F_Temp/" + ftid)
  883. $('#DiskValve').attr("href", "/ctrl_F_DiskValve/" + ftid)
  884. }
  885. $('#Vacuum').attr("href", "/actuator_chart_F/vacuum/" + ftid)
  886. $('#ThreeWayValveInput').attr("href", "/actuator_chart_F/threewayvalve_input/" + ftid)
  887. $('#SolenoidTankPump').attr("href", "/actuator_chart_F/solenoid_tank_pump/" + ftid)
  888. $('#SolenoidOuterWater').attr("href", "/actuator_chart_F/solenoid_outer_water/" + ftid)
  889. $('#SolenoidWaterIn').attr("href", "/actuator_chart_F/solenoid_tank_water_in/" + ftid)
  890. $('#SolenoidWaterOut').attr("href", "/actuator_chart_F/solenoid_tank_water_out/" + ftid)
  891. $('#PumpSensor').attr("href", "/actuator_chart_F/pump_sensor/" + ftid)
  892. $('#ThreeWayValveFloat').attr("href", "/actuator_chart_F/threewayvalve_outer_float/" + ftid)
  893. $('#SolenoidDisinfect').attr("href", "/actuator_chart_F/solenoid_tank_disinfect/" + ftid)
  894. $('#Motor').attr("href", "/actuator_chart_F/motor/" + ftid)
  895. $('#Heater1').attr("href", "/actuator_chart_F/heater1/" + ftid)
  896. $('#Heater2').attr("href", "/actuator_chart_F/heater2/" + ftid)
  897. $('#DiskValve').attr("href", "/actuator_chart_F/diskValve/" + ftid)
  898. $('#Warning_Light').attr("href", "/actuator_chart_F/Warning_Light/" + ftid)
  899. $("#UltraSonic").attr("href", "/sensor_chart_F/UltraSonic/" + ftid)
  900. $("#motorEncoder").attr("href", "/sensor_chart_F/motorEncoder/" + ftid)
  901. $("#SHT11_Temp").attr("href", "/sensor_chart_F/SHT11_Temp/" + ftid)
  902. $("#SHT11_Humidity").attr("href", "/sensor_chart_F/SHT11_Humidity/" + ftid)
  903. $("#CO2").attr("href", "/sensor_chart_F/CO2/" + ftid)
  904. $("#PH").attr("href", "/sensor_chart_F/PH/" + ftid)
  905. $("#ORP").attr("href", "/sensor_chart_F/ORP/" + ftid)
  906. $("#DO").attr("href", "/sensor_chart_F/DO/" + ftid)
  907. $("#EC").attr("href", "/sensor_chart_F/EC/" + ftid)
  908. $("#PA").attr("href", "/sensor_chart_F/PA/" + ftid)
  909. $("#WaterLevel").attr("href", "/sensor_chart_F/WaterLevel/" + ftid)
  910. $("#butterflyvalve").attr("href", "/sensor_chart_F/butterflyvalve/" + ftid)
  911. $('#camera_ferment_tid').attr("href", "/camera_F" + ftid)
  912. $("#F_set").attr("href", "/auto_F/" + ftid)
  913. $('#F_Modal').modal('show');
  914. }
  915. function update_data_FI(fitid){
  916. $('#Modal_title_input').text("發酵入料儲豆槽 FI" + fitid + " 狀態")
  917. $.get('/loading/FI' + fitid,'', function (res) {
  918. if (res.input_vacuum == 0) {
  919. $("#intput_vacuum_status").css("background-color", "#C0C0C0")
  920. } else if (res.input_vacuum == 1) {
  921. $("#intput_vacuum_status").css("background-color", "forestgreen")
  922. } else { $("#intput_vacuum_status").css("background-color", "crimson") }
  923. $("#FI_UltraSonic_status").text(res.input_UltraSonic);
  924. }, 'json');
  925. if (status == 2) {
  926. $('#actuator_link_input').attr("title", "該使用者無修改權限")
  927. $('#sensor_link_input').attr("title", "該使用者無修改權限")
  928. $('#input_Vacuum').attr("title", "該使用者無修改權限")
  929. }
  930. $("#input_Vacuum").attr("href", "/actuator_chart_FI/vacuum/" + fitid)
  931. $('#FI_camera_ferment_tid').attr("href", "/camera_FI" + fitid)
  932. $("#FI_UltraSonic").attr("href", "/sensor_chart_FI/UltraSonic/" + fitid)
  933. $("#FI_set").attr("href", "/auto_FI/" + fitid)
  934. $('#FI_Modal').modal('show');
  935. };
  936. function update_data_FO(fotid){
  937. $.get('/loading/FO' + fotid, '', function (res) {
  938. if (res.output_vacuum == 0) {
  939. $("#output_vacuum_status").css("background-color", "#C0C0C0")
  940. } else if (res.output_vacuum == 1) {
  941. $("#output_vacuum_status").css("background-color", "forestgreen")
  942. } else { $("#output_vacuum_status").css("background-color", "crimson") }
  943. $("#FO_UltraSonic_status").text(res.output_UltraSonic);
  944. }, 'json');
  945. $('#Modal_title_output').text("發酵出料儲豆槽 FO" + fotid + " 狀態")
  946. if (status == 2) {
  947. $('#actuator_link_output').attr("title", "該使用者無修改權限")
  948. $('#sensor_link_output').attr("title", "該使用者無修改權限")
  949. $('#output_Vacuum').attr("title", "該使用者無修改權限")
  950. }
  951. $("#output_Vacuum").attr("href", "/actuator_chart_FO/vacuum/" + fotid)
  952. $('#FO_camera_ferment_tid').attr("href", "/camera_FO" + fotid)
  953. $("#FO_UltraSonic").attr("href", "/sensor_chart_FO/UltraSonic/" + fotid)
  954. $("#FO_set").attr("href", "/auto_FO/" + fotid)
  955. $('#FO_Modal').modal('show');
  956. };
  957. var button_F1 = document.getElementById('F1');
  958. button_F1.addEventListener('click', function () {update_data_F("1")});
  959. var button_F2 = document.getElementById('F2');
  960. button_F2.addEventListener('click', function () { update_data_F("2")});
  961. var button_F3 = document.getElementById('F3');
  962. button_F3.addEventListener('click', function () { update_data_F("3") });
  963. var button_F4 = document.getElementById('F4');
  964. button_F4.addEventListener('click', function () { update_data_F("4") });
  965. var button_F5 = document.getElementById('F5');
  966. button_F5.addEventListener('click', function () { update_data_F("5") });
  967. var button_F6 = document.getElementById('F6');
  968. button_F6.addEventListener('click', function () { update_data_F("6") });
  969. var button_F7 = document.getElementById('F7');
  970. button_F7.addEventListener('click', function () { update_data_F("7") });
  971. var button_F8 = document.getElementById('F8');
  972. button_F8.addEventListener('click', function () { update_data_F("8") });
  973. var button_F9 = document.getElementById('F9');
  974. button_F9.addEventListener('click', function () { update_data_F("9") });
  975. var button_F10 = document.getElementById('F10');
  976. button_F10.addEventListener('click', function () { update_data_F("10") });
  977. var button_F11 = document.getElementById('F11');
  978. button_F11.addEventListener('click', function () { update_data_F("11") });
  979. var button_F12 = document.getElementById('F12');
  980. button_F12.addEventListener('click', function () { update_data_F("12") });
  981. var button_FI1 = document.getElementById('FI1');
  982. button_FI1.addEventListener('click', function () { update_data_FI("1") });
  983. var button_FI2 = document.getElementById('FI2');
  984. button_FI2.addEventListener('click', function () { update_data_FI("2") });
  985. var button_FO1 = document.getElementById('FO1');
  986. button_FO1.addEventListener('click', function () { update_data_FO("1") });
  987. var button_FO2 = document.getElementById('FO2');
  988. button_FO2.addEventListener('click', function () { update_data_FO("2") });
  989. </script>
  990. {% endblock %}