]> jspc29.x-matter.uni-frankfurt.de Git - mvd_epics.git/commitdiff
DASH: new /pv/<pv_name> details page
authorPhilipp Klaus <philipp.klaus@gmail.com>
Sat, 23 Sep 2017 03:57:40 +0000 (11:57 +0800)
committerPhilipp Klaus <philipp.klaus@gmail.com>
Sat, 23 Sep 2017 03:57:40 +0000 (11:57 +0800)
python_suite/dashboard/dashboard.py
python_suite/dashboard/views/pv_details_bootstrap.jinja2 [new file with mode: 0644]

index ed3622f13bd817d0db30cff2ae687919a9d50597..a842c73b2f4e81b14017b868be0515210c98c4aa 100755 (executable)
@@ -173,6 +173,11 @@ def json_replace_nan():
 def index():
     redirect('/list_bs/general_overview')
 
+@route('/pv/<pv_name>')
+@view('pv_details_bootstrap.jinja2')
+def pv_details(pv_name):
+    return {'pv_name': pv_name, 'config': CONFIG}
+
 @route('/list_bs/<page>')
 @view('pv_overview_bootstrap.jinja2')
 def list_pvs_bs(page):
diff --git a/python_suite/dashboard/views/pv_details_bootstrap.jinja2 b/python_suite/dashboard/views/pv_details_bootstrap.jinja2
new file mode 100644 (file)
index 0000000..bc23dd7
--- /dev/null
@@ -0,0 +1,74 @@
+{% extends "base_bootstrap.jinja2" %}
+
+{% block title %}PV Details {{ pv_name }}{% endblock %}
+
+{% block header %}
+<meta http-equiv="refresh" content="15">
+<link rel="stylesheet" href="/static/css/sparkline.css">
+<script src="https://d3js.org/d3.v4.min.js"></script>
+<script src="/static/js/sparkline.js"></script>
+<style>
+.details-list .row {
+  border-bottom: 1px solid #fff;
+}
+.details-list .row :nth-child(even){
+  background-color: #bbcdea;
+}
+.details-list .row :nth-child(odd){
+  background-color: #a8c6f7;
+}
+</style>
+{% endblock %}
+
+{% block content %}
+<h2>Process Variable Details</h2>
+<h3>{{ pv_name }}</h3>
+{% set PV = config.PVs[config.PV_lookup[pv_name]] %}
+<div class="pv-block value indicator {{ PV.classes }}">
+       <div class="error"></div>
+       <div class="pvname" style="overflow-wrap:break-word;">{{ PV.alias or PV.name }}</div>
+       <div class="btn-group">
+               <a class="btn btn-sm btn-outline-primary btn-pv" href="/pv/{{ PV.name }}" title="Details page for PV {{ PV.name }}">PV</a>
+               <button type="button" class="btn btn-sm btn-outline-primary btn-copy js-tooltip js-copy" data-toggle="tooltip" data-placement="bottom" data-copy="{{ PV.name }}" title="Copy PV name to clipboard">
+                       <img class="icon" src="/static/images/clipboard.svg">
+               </button>
+       </div>
+       <div class="value-unit-box" style="display: inline-block;">
+               <span class="value">
+               {% if 'switch' in PV.classes %}
+                       <label class="toggle">
+                               <input type="checkbox" disabled readonly {{ 'checked' if 'ON' in PV.value else '' }}>
+                               <span data-unchecked="OFF" data-checked="ON"></span>
+                       </label>
+               {% else %}
+                       {% if PV.precision is number %}
+                               {{ ("%."+PV.precision|string +"f") % PV.value }}
+                       {% else %}
+                               {{ PV.value }}
+                       {% endif %}
+               {% endif %}
+               </span>
+               <span class="unit">{{ PV.unit }}</span>
+       </div>
+       <div id="sparkline-{{ PV.name|replace(':','-') }}" class="sparkline"></div></td>
+       <div class="details-list container">
+               {% for key in PV %}
+               <div class="details-set row">
+                       <div class="col details-set-key"  >{{ key }}</div>
+                       <div class="col details-set-value">{{ PV[key] }}</div>
+               </div>
+               {% endfor %}
+       </div>
+</div>
+{% endblock %}
+
+
+{% block js_end_of_page %}
+/*
+$(function() {
+  // on page load
+  updateSparklines();
+});
+*/
+updateSparklines();
+{% endblock %}