From d4c32b407a283f7d77254cc23ee0e30d0df46370 Mon Sep 17 00:00:00 2001 From: Ole Artz Date: Wed, 2 Aug 2017 14:36:42 +0200 Subject: [PATCH] DASH: initial version --- python_suite/dashboard/README.md | 13 + python_suite/dashboard/dashboard.py | 15 ++ python_suite/dashboard/requirements.txt | 3 + .../dashboard/static/images/cbm_logo.png | Bin 0 -> 42764 bytes python_suite/dashboard/static/js/script.js | 4 + .../dashboard/views/pv_overview.jinja2 | 251 ++++++++++++++++++ 6 files changed, 286 insertions(+) create mode 100644 python_suite/dashboard/README.md create mode 100755 python_suite/dashboard/dashboard.py create mode 100644 python_suite/dashboard/requirements.txt create mode 100644 python_suite/dashboard/static/images/cbm_logo.png create mode 100644 python_suite/dashboard/static/js/script.js create mode 100644 python_suite/dashboard/views/pv_overview.jinja2 diff --git a/python_suite/dashboard/README.md b/python_suite/dashboard/README.md new file mode 100644 index 0000000..0163d9e --- /dev/null +++ b/python_suite/dashboard/README.md @@ -0,0 +1,13 @@ +## EPICS Dashboard + +### Installation + +To install the required Python packages, run: + + pip install --upgrade -r requirements.txt + +### Running the Dashboard Server + +To start the server, run: + + ./dashboard.py diff --git a/python_suite/dashboard/dashboard.py b/python_suite/dashboard/dashboard.py new file mode 100755 index 0000000..8d41242 --- /dev/null +++ b/python_suite/dashboard/dashboard.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python + +from bottle import route, run, static_file +from bottle import jinja2_view as view + +@route('/') +@view('pv_overview.jinja2') +def index(): + return {} + +@route('/static/') +def static_content(path): + return static_file(path, root='./static/') + +run(host='', port=8080) diff --git a/python_suite/dashboard/requirements.txt b/python_suite/dashboard/requirements.txt new file mode 100644 index 0000000..7e1c8e2 --- /dev/null +++ b/python_suite/dashboard/requirements.txt @@ -0,0 +1,3 @@ +bottle +jinja2 +pyepics diff --git a/python_suite/dashboard/static/images/cbm_logo.png b/python_suite/dashboard/static/images/cbm_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..58ad968671291c86a3f82c6ac118b9a46ccb1db9 GIT binary patch literal 42764 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 literal 0 HcmV?d00001 diff --git a/python_suite/dashboard/static/js/script.js b/python_suite/dashboard/static/js/script.js new file mode 100644 index 0000000..2a0a758 --- /dev/null +++ b/python_suite/dashboard/static/js/script.js @@ -0,0 +1,4 @@ +/* +alert("whats up"); +console.log("what's up?"); +*/ diff --git a/python_suite/dashboard/views/pv_overview.jinja2 b/python_suite/dashboard/views/pv_overview.jinja2 new file mode 100644 index 0000000..13ff0c2 --- /dev/null +++ b/python_suite/dashboard/views/pv_overview.jinja2 @@ -0,0 +1,251 @@ + + + PRESTO - OVERVIEW + + + + + +
+
+ logo +

PRESTO - Overview
Prototype of the Second Station of the Micro Vertex Detector +
of the Compressed Baryonic Matter

+
+
+
+

Cooling

+

HUBER_COOLING

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Process VariableValueUnit
Bath Temperature Momentum° C
External Temperature Momentum° C
Current Setpoint Value° C
+

FLOW_METER

+ + + + + + + + + + + + + + + + + + + + + +
Process VariableValueUnit
Flow Inputl/min
Flow Outputl/min
+
+
+

Pressure

+

BALZERS_PKG020

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Process VariableValueUnit
Side A - IKR Voltage V
Side A - TPR2 VoltageV
Side B - IKR VoltageV
Side B - TPR2 VoltageV
+

VACOM_MVC3

+
+
+

Temperature

+

PT100_BOARD

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Process VariableValueUnit
ID 00° C
ID 01° C
ID 02° C
ID 03° C
ID 04° C
ID 05° C
ID 06° C
ID 07° C
ID 08° C
ID 09° C
ID 10° C
ID 11° C
ID 12° C
ID 13° C
ID 14° C
ID 15° C
ID 16° C
ID 17° C
+
+
+
+
+ Copyright © Ole Artz, + IKF-Working Group Prof. Dr. Stroth +
+
+ + + + + -- 2.43.0