@yamcs/opi
v1.2.22
Published
OPI Display Renderer
Downloads
264
Readme
opi.js
This is a JavaScript library for rendering Yamcs Operator Interfaces (OPI) in a web browser.
An OPI is a file in XML format that describes a synoptic display for the monitoring and control of systems.
This library is a side project of Yamcs Mission Control for use in its web interface. Operators can upload and monitor synoptic displays where widgets are connected to telemetry delivered by Yamcs.
Limitations
Compared to the Yamcs Studio desktop software, this library has these limitations:
- No edit support
- No Python scripts (use JavaScript instead)
- No access to Java code from within scripts
- Scripts cannot access the local file system
And as this library is in incubation phase, many widgets are not or not fully supported.
Widget Support
Ticked widgets are at least partially implemented.
Controls
- [x] Action Button
- [x] Boolean Button
- [x] Boolean Switch
- [x] Check Box
- [x] Choice Button
- [x] Combo
- [x] Image Boolean Button
- [ ] Knob
- [x] Menu Button
- [x] Native Button
- [x] Radio Box
- [x] Scrollbar
- [ ] Spinner
- [ ] Scaled Slider
- [x] Text Input
- [ ] Thumb Wheel
Graphics
- [x] Arc
- [x] Ellipse
- [x] Image
- [x] Label
- [x] Polygon
- [x] Polyline
- [x] Rectangle
- [x] Rounded Rectangle
Monitors
- [x] Byte Monitor
- [x] Gauge
- [x] Image Boolean Indicator
- [x] Intensity Graph
- [x] LED
- [x] Meter
- [x] Progress Bar
- [x] Tank
- [x] Text Update
- [x] Thermometer
- [x] XY Graph
Others
- [ ] Array
- [x] Connection
- [x] Display
- [ ] Grid Layout
- [x] Grouping Container
- [x] Linking Container
- [ ] Sash Container
- [x] Tabbed Container
- [x] Table
- [x] Web Browser
Usage
npm install --save @yamcs/opi
<div id="mydisplay" style="display: inline-block"></div>
import { Display } from "@yamcs/opi";
const targetEl = document.getElementById("mydisplay");
const display = new Display(targetEl);
display.setSource("/static/my-display.opi");
Acknowledgments
The OPI display format originates from Control System Studio, an Eclipse RCP product. The implementation in this repository ports many of their routines.
Note that compatibility with Control System Studio is not an objective of this library. Instead we follow the display format of Yamcs Studio -- a fork of Control System Studio.
License
MIT License
This product includes 3rd party software under different terms. For details see LICENSE.