status.html 39 KB

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