pv['value'] = '- disconnected -'
pv['unit'] = ''
pv['classes'] = 'disconnected'
+ pv['precision'] = None
def cb_value_update(**kwargs):
pv['value'] = kwargs['char_value']
else:
pv['value'] = kwargs['value']
+ pv['precision'] = kwargs['precision']
+ #if type(kwargs['precision']) == int and ('double' in kwargs['type'] or 'float' in kwargs['type']):
+ # pv['value'] = round(pv['value'], kwargs['precision'])
+ if kwargs['enum_strs'] == (b'OFF', b'ON'):
+ pv['classes'] += ' switch'
if pv['value'] is None: pv['value'] = '- disconnected -'
pv['unit'] = kwargs['units'] or ''
- if pv['value'] == 'OFF': pv['value'] = '- OFF -'
- if pv['value'] == 'ON': pv['value'] = '- ON -'
-
+ if pv['unit'] == 'deg C': pv['unit'] = '°C'
+ if pv['unit'] == 'g/m3': pv['unit'] = 'g/m³'
@route('/')
@view('pv_overview.jinja2')
def index():
for pv in group['PVs']:
pv['value'] = '- disconnected (initial) -'
pv['unit'] = ''
+ pv['precision'] = None
pv['classes'] = 'disconnected'
PVS[pv['name']] = epics.PV(pv['name'], auto_monitor=True, form='ctrl', callback=cb_value_update, connection_callback=cb_connection_change)
text-align: center;
}
-.Cooling table, th, td {
+table, th, td {
border: 1px solid black;
}
-.Cooling table, th {
+table, th {
text-align: left;
}
+/* ALARMS */
.invalid_alarm:after {
content: "- invalid -";
position: relative;
border: 3px solid #EBFF00;
}
+/* TOGGLE ON/OFF */
+.toggle {
+ overflow: hidden;
+ display: inline-block;
+ width: 8em;
+ padding: 0.125em;
+ }
+ .toggle input {
+ position: absolute;
+ visibility: hidden;
+ }
+ .toggle span {
+ position: relative;
+ left: 0%;
+ display: block;
+ text-transform: uppercase;
+ text-align: center;
+
+ -webkit-transition: left 200ms ease-out;
+ -moz-transition: left 200ms ease-out;
+ -o-transition: left 200ms ease-out;
+ transition: left 200ms ease-out;
+ }
+ .toggle :checked + span {
+ left: 50%;
+ }
+
+ .toggle span:before {
+ content: attr(data-unchecked);
+ display: block;
+ width: 50%;
+ background-color: #525252;
+ border-radius: 0.15em;
+ box-shadow: inset 0 0.1em 0 rgba(255, 255, 255, 0.3);
+ color: white;
+ }
+
+ .toggle :checked + span:before {
+ content: attr(data-checked);
+ background-color: #0099CC;
+ }
{% for PV in group.PVs %}
<tr>
<td>{{ PV.name }}</td>
- <td class="{{ PV.classes }}">{{ PV.value }}</td>
+ <td class="{{ PV.classes }}">
+ {% 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.value|round(PV.precision) }}
+ {% else %}
+ {{ PV.value }}
+ {% endif %}
+ {% endif %}
+ </td>
<td>{{ PV.unit }}</td>
</tr>
{% endfor %}