Display Builder Web Runtime

Example

Enter a 'file:' or 'http:' URL for a *.bob or *.opi display:

Display:
Macros:

Client URLs

Serve file that's fetched via http: or https:

view.jsp?display=https%3A//some_host/opi/file.opi

Display a file that's in the file system of the Tomcat host:

view.jsp?display=file:/Path/to/Display+Builder/01_main.bob

Note limitations of file:/.. URLs: If the display contains links to other resources like images, these will be turned URLs relative to the display URL, i.e. also 'file:/' URLs. The client will then try to resolve them, not the server, which can cause two problems. For one, the path will not resolve, because it was only a valid file on the server, not the client. Secondly, most web browsers now block local file access for security reasons.

To serve displays which include images, all the files should thus be provided via http URLs, not file URLs.

Macros

When manually entering a URL, you can use the syntax $(NAME)=Some Value&$(OTHER)=Other Value as in

view.jsp?display=https://some_host/opi/file.opi&$(S)=06&$(S1)=06

That simplified mechanism, however, is limited when you try to pass values which contain '=' or '&'.

A more robust mechanism passes macros as a macros=JSON map, for example {"S"="06", "S1"="06"}, but note that the map needs to be URL encoded, for example using JavaScript encodeURIComponent('{"NAME"="Value"}'), resulting in

view.jsp?display=https://some_host/opi/file.opi&macros=%7B%22S%22%3A%2206%22%2C%22S1%22%3A%2206%22%7D

Cache

Page requests are cached, and this URL returns cache info:

cache

During display development, caching can be disabled by including cache=false in the request:

view.jsp?cache=false&display=file:/Path/to/Display+Builder/01_main.bob

JRE:

2023-03-20 Strip chart widget: Basic PV display via Data Browser widget.
2023-03-20 Data Browser: Per-widget plot options allow widgets with differnet time scale in same display.
2023-03-13 Byte monitor: Read labels from legacy files; black/white labels based on contrast.
2022-06-22 'cache=false' replaces cached entry instead of circumventing cache.
2022-05-18 'databrowser' reads time span, context menu to change.
2022-04-07 "R0" jQuery 3.6.0.
2021-08-13 Support 'template' widget.
2021-03-23 Filter 'display'.
2021-03-01 Support 'led' and 'multi_state_led' labels.
2021-02-04 Support 'byte monitor' labels.
2021-01-29 Indicate read-only via same cursor as in CS-Studio.
2021-01-28 Simple 'spinner'.
2020-11-20 Suppress '{fileselector}'.
2020-11-02 favicon.
2020-10-28 Handle legacy Combo with items not-from-PV.
2020-10-21 Defer initial update for known PV to next cycle (avoids update while widget still initializes).
2020-10-05 Support 'navtabs' widgets.
2020-10-02 Embedded display indicates name of failed/missing file.
2020-10-01 Support 'cache=false'.
2020-09-30 Support macros for 'Tabs'.
2020-08-28 Combo support.
2020-07-13 '$(DID)'.
2020-06-11 'Symbol' widget for images. 'Text-Symbol'. Remove 'Disconnect' button. For testing, click on the connection indicator.
2020-06-10 Disable DTD. Mark response as UTF-8 to support wider character sets.
2020-06-09 Display whitelist.
2020-01-17 Middle-click copies PV name to clipboard.
2020-01-07 Use 'flex' display to align label, textupdate.
2019-12-11 Coloring of buttons w/ custom background color.
2019-12-10 Patch legacy 'longString' PV names.
2019-10-28 Fix alarm border location for LED and ByteMonior. Check if action button 'enabled'.
2019-09-30 More lenient rule 'expression' vs. 'value' lookup. Slider and scrollbar widgets.
2019-09-19 Support simple 'out_exp' in visibility rules. Image plot supports rules on 'maximum'. XYPlot plots what's available when some PVs are NaN.
2019-08-05 Several widgets support writing
2019-07-04 Initial version presented at EPICS Meeting