status.html 42 KB

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