status.html 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>{{ data['title'] }} Status display</title>
  6. <meta name="description"
  7. content="Status display generated by BORA.">
  8. <link rel="stylesheet" href="{{ static_url("style.css") }}">
  9. <link rel="stylesheet" href="{{ static_url("jquery-ui.min.css") }}">
  10. <!--[if IE]>
  11. <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  12. <![endif]-->
  13. </head>
  14. <body>
  15. <div id="page_info">{{ data['title'] }} data monitoring. Last refreshed</div>
  16. <div id="page_title_cache" style="display:none;">{{ data['title'] }}</div>
  17. {% if data['style'] %}
  18. {% for key in data['style'] %}
  19. {% if data['style'][key]['type'] == "calc" %}
  20. <div style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{
  21. data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px;
  22. height:{{ data['style'][key]['height'] }}px;
  23. {% if "background_color" in data['style'][key] %}
  24. background-color:{{ data['style'][key]['background_color'] }}'
  25. {% else%}
  26. {% end %}
  27. {% if "condition" in data['style'][key] %}
  28. data-cond="{{ data['style'][key]['condition'] }}"
  29. {% else%}position
  30. {% end%}
  31. {% if "formula" in data['style'][key] %}
  32. data-formula="{{ data['style'][key]['formula'] }}"
  33. {% else %}
  34. {% end %}
  35. {% if "lesser" in data['style'][key] %}
  36. data-lesser="{{ data['style'][key]['lesser'] }}"
  37. {% else %}
  38. {% end %}
  39. {% if "larger" in data['style'][key] %}
  40. data-larger="{{ data['style'][key]['larger'] }}"
  41. {% else %}
  42. {% end %}
  43. {% if "decimal" in data['style'][key] %}
  44. data-decimal="{{ data['style'][key]['decimal'] }}"
  45. {% else %}
  46. {% end %}
  47. data-type="{{ data['style'][key]['type'] }}" class='databox' id="{{ key }}">
  48. <p><span style="color: #000; font-size: {{ data['style'][key]['header']['size'] }}px; font-weight: {{ data['style'][key]['header']['weight'] }};" class="title">{{ data['style'][key]['header']['title'] }} </span><span style="color: #000; font-size: {{ data['style'][key]['unit']['size'] }}px; font-weight: {{ data['style'][key]['unit']['weight'] }};" class="varval"> --- </span><span class='unit_title' style="color: #000; font-size: {{ data['style'][key]['unit']['size'] }}px; font-weight: {{ data['style'][key]['unit']['weight'] }};" > {{ data['style'][key]['unit']['title'] }}</span></p>
  49. </div>
  50. {% else %}
  51. {% end %}
  52. {% if data['style'][key]['type'] == "data" %}
  53. {% if "ref" in data['style'][key] %}
  54. <div tooltip="{{ data['style'][key]['ref'] }}"
  55. {% else %}
  56. <div tooltip="{{ key }}"
  57. {% end %}
  58. class="databox" style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px; height:{{ data['style'][key]['height'] }}px;
  59. {% if "background_color" in data['style'][key] %}
  60. background-color:{{ data['style'][key]['background_color'] }};'
  61. {% else%}
  62. {% end%}
  63. {% if "condition" in data['style'][key] %}
  64. data-cond="{{ data['style'][key]['condition'] }}"
  65. {% else%}
  66. {% end%}
  67. {% if "formula" in data['style'][key] %}
  68. data-formula="{{ data['style'][key]['formula'] }}"
  69. {% else %}
  70. {% end %}
  71. {% if "lesser" in data['style'][key] %}
  72. data-lesser="{{ data['style'][key]['lesser'] }}"
  73. {% else %}
  74. {% end %}
  75. {% if "larger" in data['style'][key] %}
  76. data-larger="{{ data['style'][key]['larger'] }}"
  77. {% else %}
  78. {% end %}
  79. {% if "decimal" in data['style'][key] %}
  80. data-decimal="{{ data['style'][key]['decimal'] }}"
  81. {% else %}
  82. {% end %}
  83. {% if "exponential" in data['style'][key] %}
  84. data-exponential="{{ data['style'][key]['exponential'] }}"
  85. {% else %}
  86. {% end %}
  87. {% if "trend" in data['style'][key] %}
  88. data-trend="{{ data['style'][key]['trend'] }}"
  89. {% else %}
  90. {% end %}
  91. {% if "linkhtml" in data['style'][key] %}
  92. {% if data['style'][key]['linkhtml'] == 'true' %}
  93. {% if "server" in data %}
  94. {% if data['style'][key]['ref'] in data['varname'] %}
  95. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  96. {% else %}
  97. {% end %}
  98. {% else %}
  99. {% end %}
  100. {% else %}
  101. {% end %}
  102. {% else %}
  103. {% end %}
  104. data-adei="{{ data['server'] }}"
  105. data-query="{{ data['varname'][data['style'][key]['ref']] }}"
  106. {% if "ref" in data['style'][key] %}
  107. data-type="{{ data['style'][key]['type'] }}" id="{{ key }}">
  108. <p><span style="color: #000; font-size: {{ data['style'][key]['header']['size'] }}px; font-weight: {{ data['style'][key]['header']['weight'] }};" class="title">{{ data['style'][key]['header']['title'] }} </span><span style="color: #000; font-size: {{ data['style'][key]['unit']['size'] }}px; font-weight: {{ data['style'][key]['unit']['weight'] }};" class="varval"> --- </span><span class='unit_title' style="color: #000; font-size: {{ data['style'][key]['unit']['size'] }}px; font-weight: {{ data['style'][key]['unit']['weight'] }};"> {{ data['style'][key]['unit']['title'] }}</span>
  109. {% if "trend" in data['style'][key] %}
  110. {% if data['style'][key]['trend'] == 'true' %}
  111. </p>
  112. {% else %}
  113. {% end %}
  114. {% else %}
  115. {% end %}
  116. </div>
  117. {% else %}
  118. data-type="{{ data['style'][key]['type'] }}" id="{{ key }}">
  119. <p><span style="color: #000; font-size: {{ data['style'][key]['header']['size'] }}px; font-weight: {{ data['style'][key]['header']['weight'] }};" class="title">{{ data['style'][key]['header']['title'] }} </span><span style="color: #000; font-size: {{ data['style'][key]['unit']['size'] }}px; font-weight: {{ data['style'][key]['unit']['weight'] }};" class="varval"> --- </span><span class='unit_title' style="color: #000; font-size: {{ data['style'][key]['unit']['size'] }}px; font-weight: {{ data['style'][key]['unit']['weight'] }};"> {{ data['style'][key]['unit']['title'] }}</span>
  120. {% if "trend" in data['style'][key] %}
  121. {% if data['style'][key]['trend'] == 'true' %}
  122. </p>
  123. {% else %}
  124. {% end %}
  125. {% else %}
  126. {% end %}
  127. </div>
  128. {% end %}
  129. {% else %}
  130. {% end %}
  131. {% if data['style'][key]['type'] == "icon" %}
  132. {% if data['style'][key]['icon'] == "valve" %}
  133. {% if "ref" in data['style'][key] %}
  134. <div tooltip="{{ data['style'][key]['ref'] }}"
  135. {% else %}
  136. <div tooltip="{{ key }}"
  137. {% end %}
  138. style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px; height:{{ data['style'][key]['height'] }}px;
  139. {% if "background_color" in data['style'][key] %}
  140. background-color:{{ data['style'][key]['background_color'] }};'
  141. {% else%}
  142. {% end%}
  143. {% if "trend" in data['style'][key] %}
  144. data-trend="{{ data['style'][key]['trend'] }}"
  145. {% else %}
  146. {% end %}
  147. {% if data['style'][key]['linkhtml'] == 'true' %}
  148. {% if "server" in data %}
  149. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  150. {% else %}
  151. {% end %}
  152. {% else %}
  153. {% end %}
  154. {% if "ref" in data['style'][key] %}
  155. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  156. {% if "trend" in data['style'][key] %}
  157. {% if data['style'][key]['trend'] == 'true' %}
  158. {% else %}
  159. {% end %}
  160. {% else %}
  161. {% end %}
  162. <div class="icon">
  163. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("valve_inactive.png") }}'></img>
  164. </div>
  165. </div>
  166. {% else %}
  167. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  168. {% if data['style'][key]['trend'] == 'true' %}
  169. {% else %}
  170. {% end %}
  171. <div class="icon">
  172. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("valve_inactive.png") }}'></img>
  173. </div>
  174. </div>
  175. {% end %}
  176. {% else %}
  177. {% end %}
  178. {% if data['style'][key]['icon'] == "commbit" %}
  179. {% if "ref" in data['style'][key] %}
  180. <div tooltip="{{ data['style'][key]['ref'] }}"
  181. {% else %}
  182. <div tooltip="{{ key }}"
  183. {% end %}
  184. style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px; height:{{ data['style'][key]['height'] }}px;
  185. {% if "background_color" in data['style'][key] %}
  186. background-color:{{ data['style'][key]['background_color'] }};'
  187. {% else%}
  188. {% end%}
  189. {% if "trend" in data['style'][key] %}
  190. data-trend="{{ data['style'][key]['trend'] }}"
  191. {% else %}
  192. {% end %}
  193. {% if data['style'][key]['linkhtml'] == 'true' %}
  194. {% if "server" in data %}
  195. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  196. {% else %}
  197. {% end %}
  198. {% else %}
  199. {% end %}
  200. {% if "ref" in data['style'][key] %}
  201. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  202. {% if data['style'][key]['trend'] == 'true' %}
  203. {% else %}
  204. {% end %}
  205. <div class="icon">
  206. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("commbit_inactive.svg") }}'></img>
  207. </div>
  208. </div>
  209. {% else %}
  210. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  211. {% if data['style'][key]['trend'] == 'true' %}
  212. {% else %}
  213. {% end %}
  214. <div class="icon">
  215. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("commbit_inactive.svg") }}'></img>
  216. </div>
  217. </div>
  218. {% end %}
  219. {% else %}
  220. {% end %}
  221. {% if data['style'][key]['icon'] == "alarm" %}
  222. {% if "ref" in data['style'][key] %}
  223. <div tooltip="{{ data['style'][key]['ref'] }}"
  224. {% else %}
  225. <div tooltip="{{ key }}"
  226. {% end %}
  227. style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px; height:{{ data['style'][key]['height'] }}px;
  228. {% if "background_color" in data['style'][key] %}
  229. background-color:{{ data['style'][key]['background_color'] }};'
  230. {% else%}
  231. {% end%}
  232. {% if "trend" in data['style'][key] %}
  233. data-trend="{{ data['style'][key]['trend'] }}"
  234. {% else %}
  235. {% end %}
  236. {% if data['style'][key]['linkhtml'] == 'true' %}
  237. {% if "server" in data %}
  238. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  239. {% else %}
  240. {% end %}
  241. {% else %}
  242. {% end %}
  243. {% if "ref" in data['style'][key] %}
  244. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  245. {% if data['style'][key]['trend'] == 'true' %}
  246. {% else %}
  247. {% end %}
  248. <div class="icon">
  249. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("alarm_inactive.svg") }}'></img>
  250. </div>
  251. </div>
  252. {% else %}
  253. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  254. {% if data['style'][key]['trend'] == 'true' %}
  255. {% else %}
  256. {% end %}
  257. <div class="icon">
  258. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("alarm_inactive.svg") }}'></img>
  259. </div>
  260. </div>
  261. {% end %}
  262. {% else %}
  263. {% end %}
  264. {% if data['style'][key]['icon'] == "TMP" %}
  265. {% if "ref" in data['style'][key] %}
  266. <div tooltip="{{ data['style'][key]['ref'] }}"
  267. {% else %}
  268. <div tooltip="{{ key }}"
  269. {% end %}
  270. style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px; height:{{ data['style'][key]['height'] }}px;
  271. {% if "background_color" in data['style'][key] %}
  272. background-color:{{ data['style'][key]['background_color'] }};'
  273. {% else%}
  274. {% end%}
  275. {% if "trend" in data['style'][key] %}
  276. data-trend="{{ data['style'][key]['trend'] }}"
  277. {% else %}
  278. {% end %}
  279. {% if data['style'][key]['linkhtml'] == 'true' %}
  280. {% if "server" in data %}
  281. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  282. {% else %}
  283. {% end %}
  284. {% else %}
  285. {% end %}
  286. {% if "ref" in data['style'][key] %}
  287. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  288. {% if data['style'][key]['trend'] == 'true' %}
  289. {% else %}
  290. {% end %}
  291. <div class="icon">
  292. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("TMP_inactive.svg") }}'></img>
  293. </div>
  294. </div>
  295. {% else %}
  296. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  297. {% if data['style'][key]['trend'] == 'true' %}
  298. {% else %}
  299. {% end %}
  300. <div class="icon">
  301. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("TMP_inactive.svg") }}'></img>
  302. </div>
  303. </div>
  304. {% end %}
  305. {% else %}
  306. {% end %}
  307. {% if data['style'][key]['icon'] == "relay" %}
  308. {% if "ref" in data['style'][key] %}
  309. <div tooltip="{{ data['style'][key]['ref'] }}"
  310. {% else %}
  311. <div tooltip="{{ key }}"
  312. {% end %}
  313. style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px; height:{{ data['style'][key]['height'] }}px;
  314. {% if "background_color" in data['style'][key] %}
  315. background-color:{{ data['style'][key]['background_color'] }};'
  316. {% else%}
  317. {% end%}
  318. {% if "trend" in data['style'][key] %}
  319. data-trend="{{ data['style'][key]['trend'] }}"
  320. {% else %}
  321. {% end %}
  322. {% if data['style'][key]['linkhtml'] == 'true' %}
  323. {% if "server" in data %}
  324. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  325. {% else %}
  326. {% end %}
  327. {% else %}
  328. {% end %}
  329. {% if "ref" in data['style'][key] %}
  330. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  331. {% if data['style'][key]['trend'] == 'true' %}
  332. {% else %}
  333. {% end %}
  334. <div class="icon">
  335. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("relay_inactive.svg") }}'></img>
  336. </div>
  337. </div>
  338. {% else %}
  339. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  340. {% if data['style'][key]['trend'] == 'true' %}
  341. {% else %}
  342. {% end %}
  343. <div class="icon">
  344. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("relay_inactive.svg") }}'></img>
  345. </div>
  346. </div>
  347. {% end %}
  348. {% else %}
  349. {% end %}
  350. {% if data['style'][key]['icon'] == "switch" %}
  351. {% if "ref" in data['style'][key] %}
  352. <div tooltip="{{ data['style'][key]['ref'] }}"
  353. {% else %}
  354. <div tooltip="{{ key }}"
  355. {% end %}
  356. style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px; height:{{ data['style'][key]['height'] }}px;
  357. {% if "background_color" in data['style'][key] %}
  358. background-color:{{ data['style'][key]['background_color'] }};'
  359. {% else%}
  360. {% end%}
  361. {% if "trend" in data['style'][key] %}
  362. data-trend="{{ data['style'][key]['trend'] }}"
  363. {% else %}
  364. {% end %}
  365. {% if data['style'][key]['linkhtml'] == 'true' %}
  366. {% if "server" in data %}
  367. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  368. {% else %}
  369. {% end %}
  370. {% else %}
  371. {% end %}
  372. {% if "ref" in data['style'][key] %}
  373. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  374. {% if data['style'][key]['trend'] == 'true' %}
  375. {% else %}
  376. {% end %}
  377. <div class="icon">
  378. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("switch_inactive.svg") }}'></img>
  379. </div>
  380. </div>
  381. {% else %}
  382. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  383. {% if data['style'][key]['trend'] == 'true' %}
  384. {% else %}
  385. {% end %}
  386. <div class="icon">
  387. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("switch_inactive.svg") }}'></img>
  388. </div>
  389. </div>
  390. {% end %}
  391. {% else %}
  392. {% end %}
  393. {% if data['style'][key]['icon'] == "bottle" %}
  394. {% if "ref" in data['style'][key] %}
  395. <div tooltip="{{ data['style'][key]['ref'] }}"
  396. {% else %}
  397. <div tooltip="{{ key }}"
  398. {% end %}
  399. style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px; height:{{ data['style'][key]['height'] }}px;
  400. {% if "background_color" in data['style'][key] %}
  401. background-color:{{ data['style'][key]['background_color'] }};'
  402. {% else%}
  403. {% end%}
  404. {% if "trend" in data['style'][key] %}
  405. data-trend="{{ data['style'][key]['trend'] }}"
  406. {% else %}
  407. {% end %}
  408. {% if data['style'][key]['linkhtml'] == 'true' %}
  409. {% if "server" in data %}
  410. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  411. {% else %}
  412. {% end %}
  413. {% else %}
  414. {% end %}
  415. {% if "ref" in data['style'][key] %}
  416. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  417. {% if data['style'][key]['trend'] == 'true' %}
  418. {% else %}
  419. {% end %}
  420. <div class="icon">
  421. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("bottle_inactive.svg") }}'></img>
  422. </div>
  423. </div>
  424. {% else %}
  425. data-type="{{ data['style'][key]['type'] }}" data-icon="{{ data['style'][key]['icon'] }}" data-off="{{ data['style'][key]['off'] }}" data-offexpression="{{ data['style'][key]['off_condition'] }}" data-on="{{ data['style'][key]['on'] }}" data-onexpression="{{ data['style'][key]['on_condition'] }}" class='databox' id="{{ key }}">
  426. {% if data['style'][key]['trend'] == 'true' %}
  427. {% else %}
  428. {% end %}
  429. <div class="icon">
  430. <img width="{{ data['style'][key]['width'] }}px" height="{{ data['style'][key]['height'] }}px" style='transform: {{ data['style'][key]['rotate'] }}' src='{{ static_url("bottle_inactive.svg") }}'></img>
  431. </div>
  432. </div>
  433. {% end %}
  434. {% else %}
  435. {% end %}
  436. {% else %}
  437. {% end %}
  438. {% if data['style'][key]['type'] == "integer-to-string" %}
  439. <div tooltip="{{ key }}" style='position: absolute; top: {{
  440. data['style'][key]['top'] }}; left:{{ data['style'][key]['left'] }};
  441. width:{{ data['style'][key]['width'] }}px; height:{{
  442. data['style'][key]['height'] }}px;
  443. {% if "background_color" in data['style'][key] %}
  444. background-color:{{ data['style'][key]['background_color'] }};'
  445. {% else%}
  446. '
  447. {% end%}
  448. {% if "cond" in data['style'][key] %}
  449. data-cond="{{ data['style'][key]['cond'] }}"
  450. {% else %}
  451. {% end %}
  452. {% if "trend" in data['style'][key] %}
  453. data-trend="{{ data['style'][key]['trend'] }}"
  454. {% else %}
  455. {% end %}
  456. data-adei="{{ data['server'] }}"
  457. data-query="{{ data['varname'][data['style'][key]['ref']] }}"
  458. {% if "linkhtml" in data['style'][key] %}
  459. {% if data['style'][key]['linkhtml'] == 'true' %}
  460. {% if "server" in data %}
  461. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  462. {% else %}
  463. {% end %}
  464. {% else %}
  465. {% end %}
  466. {% else %}
  467. {% end %}
  468. data-dict="{{ data['style'][key]['dict'] }}" data-type="{{ data['style'][key]['type'] }}" class='databox' id="{{ key }}">
  469. <p><span style="color: #000; font-size: {{ data['style'][key]['header']['size'] }}px; font-weight: {{ data['style'][key]['header']['weight'] }};" class="title">{{ data['style'][key]['header']['title'] }} </span><br /><span style="color: #000; font-size: {{ data['style'][key]['unit']['size'] }}px; font-weight: {{ data['style'][key]['unit']['weight'] }};" class="varval">--- </span>
  470. {% if "trend" in data['style'][key] %}
  471. {% if data['style'][key]['trend'] == 'true' %}
  472. {% else %}
  473. {% end %}
  474. {% else %}
  475. {% end %}
  476. </p>
  477. </div>
  478. {% else %}
  479. {% end %}
  480. {% if data['style'][key]['type'] == "header" %}
  481. <div style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{
  482. data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px;
  483. height:{{ data['style'][key]['height'] }}px;
  484. {% if "background_color" in data['style'][key] %}
  485. background-color:{{ data['style'][key]['background_color'] }};'
  486. {% else %}
  487. {% end %}
  488. {% if "titlelink" in data['style'][key] %}
  489. onclick="window.open( '{{ data['style'][key]['titlelink'] }}' );"
  490. {% else %}
  491. {% end %}
  492. data-type="{{
  493. data['style'][key]['type'] }}" class='databox' id="{{ key }}">
  494. <p><span style="color: #000; font-size: {{ data['style'][key]['header']['size'] }}px; font-weight: {{ data['style'][key]['header']['weight'] }};" class="title">{{ data['style'][key]['header']['title'] }} </span></p>
  495. </div>
  496. {% else %}
  497. {% end %}
  498. {% end %}
  499. {% else %}
  500. {% end %}
  501. <img src="{{ static_url( 'background.png' ) }}"></img>
  502. <!-- java script -->
  503. <script src="{{ static_url("jquery-1.12.3.min.js") }}"></script>
  504. <script src="{{ static_url("jquery-ui.min.js") }}"></script>
  505. <script src="{{ static_url("math.min.js") }}"></script>
  506. <script>
  507. jQuery(window).load(function () {
  508. var win_width = $(document).width();
  509. var win_height = $(document).height();
  510. $(".databox").hover(function(){
  511. var trend_time_end = Math.floor(Date.now() / 1000);
  512. var trend_time_start = trend_time_end - 3600;
  513. var key = $(this).attr('id');
  514. var data_adei = $("#" + key).attr('data-adei');
  515. var data_query = $("#" + key).attr('data-query');
  516. if ($("#" + key).attr('data-trend') == "true") {
  517. $('#'+ key).append('<span class="popup" style="top:0; left:250px;"><img src="' + data_adei + '/services/getimage.php?' + data_query + '&window='+ trend_time_start.toString() +'-'+ trend_time_end.toString() + '&frame_width=600&frame_height=400" width="600px" height="400px"/></span>');
  518. var key_left = parseInt($("#" + key).css("left"));
  519. var pos_left = key_left + 850;
  520. var key_top = parseInt($("#" + key).css("top"));
  521. var pos_top = key_top + 400;
  522. if(pos_left > win_width) {
  523. $("#" + key + " .popup").css({
  524. 'right':'250px',
  525. 'left': ''
  526. });
  527. }
  528. if(pos_top > win_height) {
  529. $("#" + key + " .popup").css({
  530. 'bottom':'0px',
  531. 'top': ''
  532. });
  533. }
  534. }
  535. });
  536. myTimer();
  537. var myVar = setInterval(myTimer, 10000);
  538. function myTimer() {
  539. var dataToSend = {};
  540. $.ajax({
  541. url: '/getdata/',
  542. //url: '/wgts/getabcddata/',
  543. type: 'GET',
  544. data: dataToSend,
  545. success: function (response) {
  546. //var objresponse = JSON.parse(response);
  547. console.log(response);
  548. for (var key in response) {
  549. //console.log(key, response[key]);
  550. data_type = $("#" + key).attr('data-type');
  551. if($("#" + key).length > 0) {
  552. if (data_type == "data") {
  553. //console.log("data");
  554. var datavalue, set_color, formula;
  555. var formula_attr = $("#" + key).attr('data-formula');
  556. var delta = (new Date().getTime()/1000.0) - response[key]["timestamp"];
  557. var dateTime = new Date( response[key]["timestamp"]*1000.0 );
  558. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  559. if (response[key]["value"]) {
  560. if (formula_attr) {
  561. datavalue = parseFloat(response[key]["value"]).toFixed($("#" + key).attr('data-decimal'));
  562. formula = formula_attr.replace("x", datavalue.toString());
  563. datavalue = math.round(math.eval(formula),2);
  564. datavalue = datavalue.toFixed($("#" + key).attr('data-decimal'));
  565. } else {
  566. if ( ($("#" + key).attr('data-exponential')) == "True" || ($("#" + key).attr('data-exponential')) == "true" ) {
  567. datavalue = parseFloat(response[key]["value"]);
  568. datavalue = datavalue.toExponential(2)
  569. } else {
  570. datavalue = parseFloat(response[key]["value"]).toFixed($("#" + key).attr('data-decimal'));
  571. }
  572. }
  573. set_color = "green";
  574. } else {
  575. datavalue = "---";
  576. set_color = "black";
  577. }
  578. $(".varval", "#" + key).text(datavalue);
  579. var condition_attr = $("#" + key).attr('data-cond');
  580. var lesser_attr = $("#" + key).attr('data-lesser');
  581. var larger_attr = $("#" + key).attr('data-larger');
  582. //console.log(condition_attr);
  583. if (condition_attr) {
  584. if (response[key]["value"] == condition_attr) {
  585. set_color = "red";
  586. }
  587. }
  588. if (lesser_attr) {
  589. if (parseFloat(response[key]["value"]) < parseFloat(lesser_attr)) {
  590. set_color = "red";
  591. }
  592. }
  593. if (larger_attr) {
  594. if (parseFloat(response[key]["value"]) > parseFloat(larger_attr)) {
  595. set_color = "red";
  596. }
  597. }
  598. $(".varval", "#" + key).css("color", set_color);
  599. $(".unit_title", "#" + key).css("color", set_color);
  600. } else if (data_type == "icon") {
  601. //console.log("ventil");
  602. var delta = (new Date().getTime()/1000.0) - response[key]["timestamp"];
  603. var dateTime = new Date( response[key]["timestamp"]*1000.0 );
  604. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  605. var on_attr = $("#" + key).attr('data-on');
  606. var off_attr = $("#" + key).attr('data-off');
  607. var on_condition = $("#" + key).attr('data-onexpression');
  608. var off_condition = $("#" + key).attr('data-offexpression');
  609. if (on_condition == 'onequal'){
  610. if (parseFloat(response[key]["value"]) == parseFloat(on_attr)) {
  611. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  612. }
  613. } else if (on_condition == 'onsmaller'){
  614. if (parseFloat(response[key]["value"]) < parseFloat(on_attr)) {
  615. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  616. }
  617. } else if (on_condition == 'ongreater'){
  618. if (parseFloat(response[key]["value"]) > parseFloat(on_attr)) {
  619. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  620. }
  621. }
  622. if (off_condition == 'offequal'){
  623. if (parseFloat(response[key]["value"]) == parseFloat(off_attr)) {
  624. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  625. }
  626. } else if (off_condition == 'offsmaller'){
  627. if (parseFloat(response[key]["value"]) < parseFloat(off_attr)) {
  628. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  629. }
  630. } else if (off_condition == 'offgreater'){
  631. if (parseFloat(response[key]["value"]) > parseFloat(off_attr)) {
  632. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  633. }
  634. }
  635. } else if (data_type == "integer-to-string") {
  636. //console.log("integer-to-string");
  637. var delta = (new Date().getTime()/1000.0) - response[key]["timestamp"];
  638. var dateTime = new Date( response[key]["timestamp"]*1000.0 );
  639. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  640. var dict_attr = JSON.parse($("#" + key).attr('data-dict'));
  641. var dict_cond;
  642. if ($("#"+key).attr("data-cond")) {
  643. dict_cond = JSON.parse($("#" + key).attr('data-cond'));
  644. } else {
  645. dict_cond = {};
  646. }
  647. var dict_color = "";
  648. if (key in response) {
  649. var token = response[key]["value"];
  650. if (token in dict_cond) {
  651. dict_color = dict_cond[token];
  652. }
  653. }
  654. $(".varval", "#" + key).css("color", dict_color);
  655. $(".varval", "#" + key).text(dict_attr[response[key]["value"]]);
  656. }
  657. }
  658. }
  659. $('[id^=virtual_]').each(function( index ) {
  660. var key = this.id;
  661. var ref = key.split("_");
  662. ref.shift();
  663. ref.pop();
  664. ref = ref.join("_");
  665. //ref = ref[1];
  666. //console.log(ref, key);
  667. data_type = $("#" + key).attr('data-type');
  668. if($("#" + key).length > 0) {
  669. if (data_type == "data") {
  670. //console.log(key);
  671. var datavalue, set_color, formula;
  672. var formula_attr = $("#" + key).attr('data-formula');
  673. var delta = (new Date().getTime()/1000.0) - response[ref]["timestamp"];
  674. var dateTime = new Date( response[ref]["timestamp"]*1000.0 );
  675. $("#"+ref).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  676. if (response[ref]["value"]) {
  677. if (formula_attr) {
  678. datavalue = parseFloat(response[ref]["value"]).toFixed($("#" + key).attr('data-decimal'));
  679. formula = formula_attr.replace("x", datavalue.toString());
  680. datavalue = math.round(math.eval(formula),2);
  681. datavalue = datavalue.toFixed($("#" + key).attr('data-decimal'));
  682. } else {
  683. datavalue = parseFloat(response[ref]["value"]).toFixed($("#" + key).attr('data-decimal'));
  684. }
  685. set_color = "green";
  686. } else {
  687. datavalue = "---";
  688. set_color = "black";
  689. }
  690. $(".varval", "#" + key).text(datavalue);
  691. var condition_attr = $("#" + key).attr('data-cond');
  692. var lesser_attr = $("#" + key).attr('data-lesser');
  693. var larger_attr = $("#" + key).attr('data-larger');
  694. //console.log(condition_attr);
  695. if (condition_attr) {
  696. if (response[ref]["value"] == condition_attr) {
  697. set_color = "red";
  698. }
  699. }
  700. if (lesser_attr) {
  701. if (parseFloat(response[ref]["value"]) < parseFloat(lesser_attr)) {
  702. set_color = "red";
  703. }
  704. }
  705. if (larger_attr) {
  706. if (parseFloat(response[ref]["value"]) > parseFloat(larger_attr)) {
  707. set_color = "red";
  708. }
  709. }
  710. $(".varval", "#" + key).css("color", set_color);
  711. $(".unit_title", "#" + key).css("color", set_color);
  712. } else if (data_type == "icon") {
  713. var on_attr = $("#" + key).attr('data-on');
  714. var off_attr = $("#" + key).attr('data-off');
  715. var on_condition = $("#" + key).attr('data-onexpression');
  716. var off_condition = $("#" + key).attr('data-offexpression');
  717. var delta = (new Date().getTime()/1000.0) - response[ref]["timestamp"];
  718. var dateTime = new Date( response[ref]["timestamp"]*1000.0 );
  719. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  720. if (on_condition == 'onequal'){
  721. if (parseFloat(response[ref]["value"]) == parseFloat(on_attr)) {
  722. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  723. }
  724. } else if (on_condition == 'onsmaller'){
  725. if (parseFloat(response[ref]["value"]) < parseFloat(on_attr)) {
  726. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  727. }
  728. } else if (on_condition == 'ongreater'){
  729. if (parseFloat(response[ref]["value"]) > parseFloat(on_attr)) {
  730. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  731. }
  732. }
  733. if (off_condition == 'offequal'){
  734. if (parseFloat(response[ref]["value"]) == parseFloat(off_attr)) {
  735. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  736. }
  737. } else if (off_condition == 'offsmaller'){
  738. if (parseFloat(response[ref]["value"]) < parseFloat(off_attr)) {
  739. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  740. }
  741. } else if (off_condition == 'offgreater'){
  742. if (parseFloat(response[ref]["value"]) > parseFloat(off_attr)) {
  743. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  744. }
  745. }
  746. } else if (data_type == "integer-to-string") {
  747. var delta = (new Date().getTime()/1000.0) - response[key]["timestamp"];
  748. var dateTime = new Date( response[key]["timestamp"]*1000.0 );
  749. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  750. var dict_attr = JSON.parse($("#" + key).attr('data-dict'));
  751. var dict_cond;
  752. if ($("#"+key).attr("data-cond")) {
  753. dict_cond = JSON.parse($("#" + key).attr('data-cond'));
  754. } else {
  755. dict_cond = {};
  756. }
  757. var dict_color = "";
  758. if (ref in response) {
  759. var token = response[ref]["value"];
  760. if (token in dict_cond) {
  761. dict_color = dict_cond[token];
  762. }
  763. }
  764. $(".varval", "#" + key).css("color", dict_color);
  765. $(".varval", "#" + key).text(dict_attr[response[ref]["value"]]);
  766. }
  767. }
  768. });
  769. $('[id^=calc_]').each(function( index ) {
  770. //console.log(this.id);
  771. //console.log($(this).attr('data-formula'));
  772. if (typeof $(this).attr('data-formula') != "undefined") {
  773. var myformula = $(this).attr('data-formula').trim();
  774. /*
  775. myformula = myformula.replace(/\[.*?\]/g, '__');
  776. console.log(myformula);
  777. */
  778. var data = myformula;
  779. var re= /\[(.*?)\]/g;
  780. var buffer = []
  781. for(m = re.exec(data); m; m = re.exec(data)){
  782. buffer.push(m[1]);
  783. }
  784. //console.log("Debug:");
  785. //console.log(buffer);
  786. var finalstring = "";
  787. var pattern = /\[(.*?)\]/g;
  788. var teststring = myformula.split(/[\[\]]+/);
  789. //console.log(teststring);
  790. //console.log(finalstring);
  791. for (var i = 0; i < teststring.length; i++) {
  792. var val = "";
  793. if (teststring[i] in response) {
  794. val = response[teststring[i]]["value"];
  795. } else {
  796. val = teststring[i];
  797. }
  798. finalstring += val;
  799. finalstring += " ";
  800. }
  801. finalstring = finalstring.trim();
  802. //console.log(finalstring);
  803. var myvalue = math.round(math.eval(finalstring),2);
  804. myvalue = myvalue.toFixed($("#" + this.id).attr('data-decimal'));
  805. set_color = "green";
  806. console.log(myvalue);
  807. $(".varval", "#" + this.id).text(myvalue);
  808. var condition_attr = $("#" + this.id).attr('data-cond');
  809. var lesser_attr = $("#" + this.id).attr('data-lesser');
  810. var larger_attr = $("#" + this.id).attr('data-larger');
  811. //console.log(condition_attr);
  812. if (condition_attr) {
  813. if (myvalue == condition_attr) {
  814. set_color = "red";
  815. }
  816. }
  817. if (lesser_attr) {
  818. if (parseFloat(myvalue) < parseFloat(lesser_attr)) {
  819. set_color = "red";
  820. }
  821. }
  822. if (larger_attr) {
  823. if (parseFloat(myvalue) > parseFloat(larger_attr)) {
  824. set_color = "red";
  825. }
  826. }
  827. $(".varval", "#" + this.id).css("color", set_color);
  828. $(".unit_title", "#" + this.id).css("color", set_color);
  829. }
  830. });
  831. var page_title_cache = $("#page_title_cache").text();
  832. var datetime = page_title_cache + " data monitoring page. Last Sync: " + response["time"];
  833. $("#page_info").text(datetime + " UTC");
  834. console.log(datetime);
  835. },
  836. error: function () {
  837. console.log("Error.")
  838. }
  839. });
  840. }
  841. });
  842. </script>
  843. </body>
  844. </html>