You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+55-19Lines changed: 55 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,9 @@
7
7
8
8
A package for building Phoebus GUIs
9
9
10
-
Techui-builder is a module for building and organising phoebus gui screens using a builder-ibek yaml description of an IOC, with a user created techui.yaml file containing a description of the screens the user wants to create.
10
+
Techui-builder is a module for building and organising Phoebus CS-Studio `.bob` screens from a `techui.yaml` description of a beamline's IOC services. It also can auto-generate a synoptic `index.bob` showing devices laid out along the beam pipe and vacuum pipe, eliminating the need to hand-craft the overview screen in Phoebus.
11
+
12
+
The `.bob` file screens are intended to be served to [Daedalus](https://github.com/DiamondLightSource/daedalus), Diamond's web-based control system UI.
The process to use this module goes as follows (WIP):
18
20
19
21
## Requirements
22
+
20
23
1. Docker
21
24
2. VSCode
22
25
3. CS-Studio (Phoebus)
23
26
24
-
## Installation
25
-
1. Clone this module with the `--recursive` flag to pull in [techui-support](git@github.com:DiamondLightSource/techui-support.git) for the associated bob files.
26
-
2. Open the project using VSCode.
27
-
3. Reopen the project in a container. Make sure you are using the VSCode extension: Dev Containers by Microsoft.
28
-
29
-
## Setting Up
27
+
## Setup
28
+
29
+
1. Clone this module with the `--recursive` flag to pull in [techui-support](https://github.com/DiamondLightSource/techui-support) for the associated bob file templates and SVG symbols.
30
+
31
+
2. Open the project using VSCode and reopen in the dev container when prompted. Make sure you are using the VSCode extension: Dev Containers by Microsoft.
32
+
33
+
3. Clone your beamline `ixx-services` repo to the root of this project, ensuring each IOC service has been converted to the ibek format.
30
34
31
-
1. Clone the beamline `ixx-services` repo to the root of this project, ensuring each IOC service has been converted to the [ibek](git@github.com:epics-containers/ibek.git) format.
1. Create your handmade synoptic overview screen in Phoebus and place at `ixx-services/synoptic/index.bob`.
36
+
## Writing a `techui.yaml` from scratch
37
+
35
38
1. Construct a `techui.yaml` file inside `ixx-services/synoptic` containing all the components from the services:
36
39
37
40
```
38
41
beamline:
39
-
short_dom: {e.g. b23, b01-1}
40
-
long_dom: {e.g. bl23b}
42
+
location: {e.g. ixx, ixx-1}
43
+
domain: {e.g. blxxi}
41
44
desc: {beamline description}
42
-
url: {e.g. b23-opis.diamond.ac.uk}
45
+
url: {e.g. ixx-opis.diamond.ac.uk}
43
46
44
-
components:
45
-
{component name}:
46
-
desc: {component description}
47
+
beam_pipe:
48
+
{component name, e.g. S1}:
49
+
label: {component description}
47
50
prefix: {PV prefix}
51
+
icon_type: {e.g. slits}
48
52
extras:
49
53
- {extra prefix 1}
50
54
- {extra prefix 2}
55
+
56
+
vacuum_pipe:
57
+
{component name, e.g. img01}:
58
+
label: {e.g. IMG 01}
59
+
prefix: {PV prefix}
60
+
icon_type: {e.g. img}
61
+
51
62
```
52
63
> [!NOTE]
53
-
> `extras` is optional, but allows any embedded screen to be added to make a summary screen e.g. combining all imgs, pirgs and ionps associated with a vacuum space.
64
+
> `extras` is optional, but allows any embedded screen to be added to a summary screen
65
+
66
+
Devices are rendered left-to-right in the order they appear in the file.
67
+
68
+
For devices not on the beam/vacuum pipe (e.g. detectors, sample environments etc), declare they under `components`. These generate `.bob` screens but do not appear on the synoptic overview.
69
+
70
+
> [!NOTE]
71
+
> If you already have a hand-crafted `index.bob` and do not define `beam_pipe` or `vacuum_pipe` in `techui.yaml`, it will be preserved as is. Defining either section will auto-generate and overwrite `index.bob`.
72
+
73
+
## Icon Type Naming Convention ##
74
+
75
+
`icon_type` values must use underscores. The corresponding SVG in `techui-support/symbols/` must use hyphens. For example:
76
+
77
+
| `icon_type` | SVG file
78
+
| ----------- | -----------
79
+
| `ion_pump` | `ion-pump.svg`
80
+
| `camera` | `camera.svg`
81
+
82
+
See the techui-support README for the full list of available symbols.
83
+
84
+
## Schema Generation ##
85
+
54
86
1. Run this command to locally generate a schema, which can be used for validation testing
55
87
56
88
```$ techui-builder schema```
@@ -63,15 +95,19 @@ The process to use this module goes as follows (WIP):
This populates `JsonMap.json` with the tree of component screens inside `ixx-services/synoptic/index.bob`.
108
+
This populates `JsonMap.json` with the tree of component screens inside `ixx-services/synoptic/index.bob`. This is used for Daedalus navigation to create the tree view in the side panel.
109
+
110
+
Output files are written to `ixx-services/synoptic/`.
0 commit comments