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