Skip to content

Commit a798f7c

Browse files
committed
Rewrite README for beam pipe and vac components
1 parent 391abe4 commit a798f7c

1 file changed

Lines changed: 55 additions & 19 deletions

File tree

README.md

Lines changed: 55 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77

88
A package for building Phoebus GUIs
99

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.
1113

1214
Source | <https://github.com/DiamondLightSource/techui-builder>
1315
:---: | :---:
@@ -17,40 +19,70 @@ Releases | <https://github.com/DiamondLightSource/techui-builder/releases
1719
The process to use this module goes as follows (WIP):
1820

1921
## Requirements
22+
2023
1. Docker
2124
2. VSCode
2225
3. CS-Studio (Phoebus)
2326

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.
3034

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.
3235

33-
`git clone --recursive git@gitlab.diamond.ac.uk:controls/containers/beamline/ixx-services.git`
34-
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+
3538
1. Construct a `techui.yaml` file inside `ixx-services/synoptic` containing all the components from the services:
3639

3740
```
3841
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}
4144
desc: {beamline description}
42-
url: {e.g. b23-opis.diamond.ac.uk}
45+
url: {e.g. ixx-opis.diamond.ac.uk}
4346
44-
components:
45-
{component name}:
46-
desc: {component description}
47+
beam_pipe:
48+
{component name, e.g. S1}:
49+
label: {component description}
4750
prefix: {PV prefix}
51+
icon_type: {e.g. slits}
4852
extras:
4953
- {extra prefix 1}
5054
- {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+
5162
```
5263
> [!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+
5486
1. Run this command to locally generate a schema, which can be used for validation testing
5587
5688
```$ techui-builder schema```
@@ -63,15 +95,19 @@ The process to use this module goes as follows (WIP):
6395
6496
## Generating the Synoptic
6597
66-
`$ techui-builder build /path/to/synoptic/techui.yaml`
98+
`$ techui-builder generate /path/to/synoptic/techui.yaml`
6799
68100
This populates `index.bob` and individual component screens inside `ixx-services/synoptic`.
69101
102+
Output files are written to `ixx-services/synoptic/`.
103+
70104
## Generating the JsonMap
71105
72106
`$ techui-builder generate-jsonmap /path/to/synoptic/index.bob`
73107
74-
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/`.
75111
76112
## Generating the Status PV database file
77113

0 commit comments

Comments
 (0)