status.html 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885
  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. {% if "linkhtml" in data['style'][key] %}
  457. {% if data['style'][key]['linkhtml'] == 'true' %}
  458. {% if "server" in data %}
  459. onclick="window.open( '{{ data["server"] }}#module=graph&{{ data['varname'][data['style'][key]['ref']] }}&experiment=-&window=86400&module=graph&virtual=srctree&srctree=&infomod=legend', '_blank');"
  460. {% else %}
  461. {% end %}
  462. {% else %}
  463. {% end %}
  464. {% else %}
  465. {% end %}
  466. data-dict="{{ data['style'][key]['dict'] }}" data-type="{{ data['style'][key]['type'] }}" class='databox' id="{{ key }}">
  467. <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>
  468. {% if "trend" in data['style'][key] %}
  469. {% if data['style'][key]['trend'] == 'true' %}
  470. {% else %}
  471. {% end %}
  472. {% else %}
  473. {% end %}
  474. </p>
  475. </div>
  476. {% else %}
  477. {% end %}
  478. {% if data['style'][key]['type'] == "header" %}
  479. <div style='position: absolute; top: {{ data['style'][key]['top'] }}; left:{{
  480. data['style'][key]['left'] }}; width:{{ data['style'][key]['width'] }}px;
  481. height:{{ data['style'][key]['height'] }}px;
  482. {% if "background_color" in data['style'][key] %}
  483. background-color:{{ data['style'][key]['background_color'] }};'
  484. {% else %}
  485. {% end %}
  486. {% if "titlelink" in data['style'][key] %}
  487. onclick="window.open( '{{ data['style'][key]['titlelink'] }}' );"
  488. {% else %}
  489. {% end %}
  490. data-type="{{
  491. data['style'][key]['type'] }}" class='databox' id="{{ key }}">
  492. <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>
  493. </div>
  494. {% else %}
  495. {% end %}
  496. {% end %}
  497. {% else %}
  498. {% end %}
  499. <img src="{{ static_url( 'background.png' ) }}"></img>
  500. <!-- java script -->
  501. <script src="{{ static_url("jquery-1.12.3.min.js") }}"></script>
  502. <script src="{{ static_url("jquery-ui.min.js") }}"></script>
  503. <script src="{{ static_url("math.min.js") }}"></script>
  504. <script>
  505. jQuery(window).load(function () {
  506. var win_width = $(document).width();
  507. var win_height = $(document).height();
  508. $(".databox").hover(function(){
  509. var trend_time_end = Math.floor(Date.now() / 1000);
  510. var trend_time_start = trend_time_end - 3600;
  511. var key = $(this).attr('id');
  512. var data_adei = $("#" + key).attr('data-adei');
  513. var data_query = $("#" + key).attr('data-query');
  514. if ($("#" + key).attr('data-trend') == "true") {
  515. $('#'+ 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>');
  516. var key_left = parseInt($("#" + key).css("left"));
  517. var pos_left = key_left + 850;
  518. var key_top = parseInt($("#" + key).css("top"));
  519. var pos_top = key_top + 400;
  520. if(pos_left > win_width) {
  521. $("#" + key + " .popup").css({
  522. 'right':'250px',
  523. 'left': ''
  524. });
  525. }
  526. if(pos_top > win_height) {
  527. $("#" + key + " .popup").css({
  528. 'bottom':'0px',
  529. 'top': ''
  530. });
  531. }
  532. }
  533. });
  534. myTimer();
  535. var myVar = setInterval(myTimer, 10000);
  536. function myTimer() {
  537. var dataToSend = {};
  538. $.ajax({
  539. url: '/'+$("#page_title_cache").text().toLowerCase()+'/getdata/',
  540. //url: '/wgts/getabcddata/',
  541. type: 'GET',
  542. data: dataToSend,
  543. success: function (response) {
  544. //var objresponse = JSON.parse(response);
  545. console.log(response);
  546. for (var key in response) {
  547. //console.log(key, response[key]);
  548. data_type = $("#" + key).attr('data-type');
  549. if($("#" + key).length > 0) {
  550. if (data_type == "data") {
  551. //console.log("data");
  552. var datavalue, set_color, formula;
  553. var formula_attr = $("#" + key).attr('data-formula');
  554. var delta = (new Date().getTime()/1000.0) - response[key]["timestamp"];
  555. var dateTime = new Date( response[key]["timestamp"]*1000.0 );
  556. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  557. if (response[key]["value"]) {
  558. if (formula_attr) {
  559. datavalue = parseFloat(response[key]["value"]).toFixed($("#" + key).attr('data-decimal'));
  560. formula = formula_attr.replace("x", datavalue.toString());
  561. datavalue = math.round(math.eval(formula),2);
  562. datavalue = datavalue.toFixed($("#" + key).attr('data-decimal'));
  563. } else {
  564. if ( ($("#" + key).attr('data-exponential')) == "True" || ($("#" + key).attr('data-exponential')) == "true" ) {
  565. datavalue = parseFloat(response[key]["value"]);
  566. datavalue = datavalue.toExponential(2)
  567. } else {
  568. datavalue = parseFloat(response[key]["value"]).toFixed($("#" + key).attr('data-decimal'));
  569. }
  570. }
  571. set_color = "green";
  572. } else {
  573. datavalue = "---";
  574. set_color = "black";
  575. }
  576. $(".varval", "#" + key).text(datavalue);
  577. var condition_attr = $("#" + key).attr('data-cond');
  578. var lesser_attr = $("#" + key).attr('data-lesser');
  579. var larger_attr = $("#" + key).attr('data-larger');
  580. //console.log(condition_attr);
  581. if (condition_attr) {
  582. if (response[key]["value"] == condition_attr) {
  583. set_color = "red";
  584. }
  585. }
  586. if (lesser_attr) {
  587. if (parseFloat(response[key]["value"]) < parseFloat(lesser_attr)) {
  588. set_color = "red";
  589. }
  590. }
  591. if (larger_attr) {
  592. if (parseFloat(response[key]["value"]) > parseFloat(larger_attr)) {
  593. set_color = "red";
  594. }
  595. }
  596. $(".varval", "#" + key).css("color", set_color);
  597. $(".unit_title", "#" + key).css("color", set_color);
  598. } else if (data_type == "icon") {
  599. //console.log("ventil");
  600. var delta = (new Date().getTime()/1000.0) - response[key]["timestamp"];
  601. var dateTime = new Date( response[key]["timestamp"]*1000.0 );
  602. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  603. var on_attr = $("#" + key).attr('data-on');
  604. var off_attr = $("#" + key).attr('data-off');
  605. var on_condition = $("#" + key).attr('data-onexpression');
  606. var off_condition = $("#" + key).attr('data-offexpression');
  607. if (on_condition == 'onequal'){
  608. if (parseFloat(response[key]["value"]) == parseFloat(on_attr)) {
  609. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  610. }
  611. } else if (on_condition == 'onsmaller'){
  612. if (parseFloat(response[key]["value"]) < parseFloat(on_attr)) {
  613. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  614. }
  615. } else if (on_condition == 'ongreater'){
  616. if (parseFloat(response[key]["value"]) > parseFloat(on_attr)) {
  617. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  618. }
  619. }
  620. if (off_condition == 'offequal'){
  621. if (parseFloat(response[key]["value"]) == parseFloat(off_attr)) {
  622. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  623. }
  624. } else if (off_condition == 'offsmaller'){
  625. if (parseFloat(response[key]["value"]) < parseFloat(off_attr)) {
  626. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  627. }
  628. } else if (off_condition == 'offgreater'){
  629. if (parseFloat(response[key]["value"]) > parseFloat(off_attr)) {
  630. $(".icon img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  631. }
  632. }
  633. } else if (data_type == "integer-to-string") {
  634. //console.log("integer-to-string");
  635. var delta = (new Date().getTime()/1000.0) - response[key]["timestamp"];
  636. var dateTime = new Date( response[key]["timestamp"]*1000.0 );
  637. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  638. var dict_attr = JSON.parse($("#" + key).attr('data-dict'));
  639. var dict_cond;
  640. if ($("#"+key).attr("data-cond")) {
  641. dict_cond = JSON.parse($("#" + key).attr('data-cond'));
  642. } else {
  643. dict_cond = {};
  644. }
  645. var dict_color = "";
  646. if (key in response) {
  647. var token = response[key]["value"];
  648. if (token in dict_cond) {
  649. dict_color = dict_cond[token];
  650. }
  651. }
  652. $(".varval", "#" + key).css("color", dict_color);
  653. $(".varval", "#" + key).text(dict_attr[response[key]["value"]]);
  654. }
  655. }
  656. }
  657. $('[id^=virtual_]').each(function( index ) {
  658. var key = this.id;
  659. var ref = key.split("_");
  660. ref.shift();
  661. ref.pop();
  662. ref = ref.join("_");
  663. //ref = ref[1];
  664. //console.log(ref, key);
  665. data_type = $("#" + key).attr('data-type');
  666. if($("#" + key).length > 0) {
  667. if (data_type == "data") {
  668. //console.log(key);
  669. var datavalue, set_color, formula;
  670. var formula_attr = $("#" + key).attr('data-formula');
  671. var delta = (new Date().getTime()/1000.0) - response[ref]["timestamp"];
  672. var dateTime = new Date( response[ref]["timestamp"]*1000.0 );
  673. $("#"+ref).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  674. if (response[ref]["value"]) {
  675. if (formula_attr) {
  676. datavalue = parseFloat(response[ref]["value"]).toFixed($("#" + key).attr('data-decimal'));
  677. formula = formula_attr.replace("x", datavalue.toString());
  678. datavalue = math.round(math.eval(formula),2);
  679. datavalue = datavalue.toFixed($("#" + key).attr('data-decimal'));
  680. } else {
  681. datavalue = parseFloat(response[ref]["value"]).toFixed($("#" + key).attr('data-decimal'));
  682. }
  683. set_color = "green";
  684. } else {
  685. datavalue = "---";
  686. set_color = "black";
  687. }
  688. $(".varval", "#" + key).text(datavalue);
  689. var condition_attr = $("#" + key).attr('data-cond');
  690. var lesser_attr = $("#" + key).attr('data-lesser');
  691. var larger_attr = $("#" + key).attr('data-larger');
  692. //console.log(condition_attr);
  693. if (condition_attr) {
  694. if (response[ref]["value"] == condition_attr) {
  695. set_color = "red";
  696. }
  697. }
  698. if (lesser_attr) {
  699. if (parseFloat(response[ref]["value"]) < parseFloat(lesser_attr)) {
  700. set_color = "red";
  701. }
  702. }
  703. if (larger_attr) {
  704. if (parseFloat(response[ref]["value"]) > parseFloat(larger_attr)) {
  705. set_color = "red";
  706. }
  707. }
  708. $(".varval", "#" + key).css("color", set_color);
  709. $(".unit_title", "#" + key).css("color", set_color);
  710. } else if (data_type == "icon") {
  711. var on_attr = $("#" + key).attr('data-on');
  712. var off_attr = $("#" + key).attr('data-off');
  713. var on_condition = $("#" + key).attr('data-onexpression');
  714. var off_condition = $("#" + key).attr('data-offexpression');
  715. var delta = (new Date().getTime()/1000.0) - response[ref]["timestamp"];
  716. var dateTime = new Date( response[ref]["timestamp"]*1000.0 );
  717. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  718. if (on_condition == 'onequal'){
  719. if (parseFloat(response[ref]["value"]) == parseFloat(on_attr)) {
  720. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  721. }
  722. } else if (on_condition == 'onsmaller'){
  723. if (parseFloat(response[ref]["value"]) < parseFloat(on_attr)) {
  724. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  725. }
  726. } else if (on_condition == 'ongreater'){
  727. if (parseFloat(response[ref]["value"]) > parseFloat(on_attr)) {
  728. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_green.svg");
  729. }
  730. }
  731. if (off_condition == 'offequal'){
  732. if (parseFloat(response[ref]["value"]) == parseFloat(off_attr)) {
  733. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  734. }
  735. } else if (off_condition == 'offsmaller'){
  736. if (parseFloat(response[ref]["value"]) < parseFloat(off_attr)) {
  737. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  738. }
  739. } else if (off_condition == 'offgreater'){
  740. if (parseFloat(response[ref]["value"]) > parseFloat(off_attr)) {
  741. $("img", "#" + key).attr("src", "/static/" + $("#" + key).attr('data-icon') + "_red.svg");
  742. }
  743. }
  744. } else if (data_type == "integer-to-string") {
  745. var delta = (new Date().getTime()/1000.0) - response[key]["timestamp"];
  746. var dateTime = new Date( response[key]["timestamp"]*1000.0 );
  747. $("#"+key).attr('tooltip', key + "\nDeltaTime: " + parseFloat(delta).toFixed(3) + " s (" + parseFloat(delta / 60.0).toFixed(3) + " min)");
  748. var dict_attr = JSON.parse($("#" + key).attr('data-dict'));
  749. var dict_cond;
  750. if ($("#"+key).attr("data-cond")) {
  751. dict_cond = JSON.parse($("#" + key).attr('data-cond'));
  752. } else {
  753. dict_cond = {};
  754. }
  755. var dict_color = "";
  756. if (ref in response) {
  757. var token = response[ref]["value"];
  758. if (token in dict_cond) {
  759. dict_color = dict_cond[token];
  760. }
  761. }
  762. $(".varval", "#" + key).css("color", dict_color);
  763. $(".varval", "#" + key).text(dict_attr[response[ref]["value"]]);
  764. }
  765. }
  766. });
  767. $('[id^=calc_]').each(function( index ) {
  768. //console.log(this.id);
  769. //console.log($(this).attr('data-formula'));
  770. if (typeof $(this).attr('data-formula') != "undefined") {
  771. var myformula = $(this).attr('data-formula').trim();
  772. /*
  773. myformula = myformula.replace(/\[.*?\]/g, '__');
  774. console.log(myformula);
  775. */
  776. var data = myformula;
  777. var re= /\[(.*?)\]/g;
  778. var buffer = []
  779. for(m = re.exec(data); m; m = re.exec(data)){
  780. buffer.push(m[1]);
  781. }
  782. //console.log("Debug:");
  783. //console.log(buffer);
  784. var finalstring = "";
  785. var pattern = /\[(.*?)\]/g;
  786. var teststring = myformula.split(/[\[\]]+/);
  787. //console.log(teststring);
  788. //console.log(finalstring);
  789. for (var i = 0; i < teststring.length; i++) {
  790. var val = "";
  791. if (teststring[i] in response) {
  792. val = response[teststring[i]]["value"];
  793. } else {
  794. val = teststring[i];
  795. }
  796. finalstring += val;
  797. finalstring += " ";
  798. }
  799. finalstring = finalstring.trim();
  800. //console.log(finalstring);
  801. var myvalue = math.round(math.eval(finalstring),2);
  802. myvalue = myvalue.toFixed($("#" + this.id).attr('data-decimal'));
  803. set_color = "green";
  804. console.log(myvalue);
  805. $(".varval", "#" + this.id).text(myvalue);
  806. var condition_attr = $("#" + this.id).attr('data-cond');
  807. var lesser_attr = $("#" + this.id).attr('data-lesser');
  808. var larger_attr = $("#" + this.id).attr('data-larger');
  809. //console.log(condition_attr);
  810. if (condition_attr) {
  811. if (myvalue == condition_attr) {
  812. set_color = "red";
  813. }
  814. }
  815. if (lesser_attr) {
  816. if (parseFloat(myvalue) < parseFloat(lesser_attr)) {
  817. set_color = "red";
  818. }
  819. }
  820. if (larger_attr) {
  821. if (parseFloat(myvalue) > parseFloat(larger_attr)) {
  822. set_color = "red";
  823. }
  824. }
  825. $(".varval", "#" + this.id).css("color", set_color);
  826. $(".unit_title", "#" + this.id).css("color", set_color);
  827. }
  828. });
  829. var page_title_cache = $("#page_title_cache").text();
  830. var datetime = page_title_cache + " data monitoring page. Last Sync: " + response["time"];
  831. $("#page_info").text(datetime + " UTC");
  832. console.log(datetime);
  833. },
  834. error: function () {
  835. console.log("Error.")
  836. }
  837. });
  838. }
  839. });
  840. </script>
  841. </body>
  842. </html>