Current Release: V5.0.0
This is the codespaces demo of React-Automation-Studio.
You can use it to evaluate the latest version without checking it out locally.
It's a forked version of the master repo with the environment set up to run in codespaces.
It needs to minimum 16GB RAM on codepsaces to build.
Once it is building you must click on the ports icon or the ports tab, where you can launch the webapp.
The app is served on port 5000 and the styleguide on port 6060.
Once you are done playing, the master and boilerplate repositories are avalible at, which you can clone locally:
Master repository:
https:/React-Automation-Studio/React-Automation-Studio
If you wish to customize the project and create user interfaces for your EPICS control system then you should clone the boiler plate repository at which pulls in this code base as a Git submodule:
Boiler plate repository:
https:/React-Automation-Studio/React-Automation-Studio-Example-Project-1
If you wish to create a standalone AlarmHandler project you should clone this project:
AlarmHandler Boiler plate repository:
https:/React-Automation-Studio/React-Automation-Studio-Alarm-Handler-Standalone
Site specific components and app screens should be kept in your repository. If you wish to contribute to the main repository for bug fixes then this must be done in the main repository at https:/React-Automation-Studio/React-Automation-Studio. If you wish to add in new components then please create them in the staging folder. If the new component requires custom EPICS code then please add it to the demo IOC.
Contact us at Github Discussions: https:/React-Automation-Studio/React-Automation-Studio/discussions
If you use React Automation Studio in your research, please cite us as follows:
@inproceedings{duckitt:icalepcs2023-fr2bco01,
author = {W. Duckitt and J.K. Abraham and D. Marcato and G. Savarese},
title = {{React Automation Studio: Modern Scientific Control with the Web}},
% booktitle = {Proc. ICALEPCS'23},
booktitle = {Proc. 19th Int. Conf. Accel. Large Exp. Phys. Control Syst. (ICALEPCS'23)},
eventdate = {2023-10-09/2023-10-13},
pages = {1643--1649},
paper = {FR2BCO01},
language = {english},
keywords = {EPICS, controls, interface, GUI, framework},
venue = {Cape Town, South Africa},
series = {International Conference on Accelerator and Large Experimental Physics Control Systems},
number = {19},
publisher = {JACoW Publishing, Geneva, Switzerland},
month = {01},
year = {2024},
issn = {2226-0358},
isbn = {978-3-95450-238-7},
doi = {10.18429/JACoW-ICALEPCS2023-FR2BCO01},
url = {https://jacow.org/icalepcs2023/papers/fr2bco01.pdf},
abstract = {{React Automation Studio is a progressive web application framework that enables the control of large scientific equipment through EPICS from any smart device connected to a network. With built-in advanced features such as reusable widgets and components, macro substitution, OAuth 2.0 authentication, access rights administration, alarm-handing with notifications, diagnostic probes and archived data viewing, it allows one to build modern, secure and fully responsive control user interfaces and overview screens for the desktop, web browser, TV, mobile and tablet devices. A general overview of React Automation Studio and its features as well as the system architecture, implementation, community involvement and future plans for the system is presented. }},
}
or: https://doi.org/10.18429/JACoW-ICALEPCS2023-FR2BCO01
and:
@InProceedings{duckitt:cyclotrons2019-tha03,
author = {W. Duckitt and J.K. Abraham},
title = {{React Automation Studio: A New Face to Control Large Scientific Equipment}},
booktitle = {Proc. Cyclotrons'19},
pages = {285--288},
paper = {THA03},
language = {english},
keywords = {EPICS, controls, GUI, interface, cyclotron},
venue = {Cape Town, South Africa},
series = {International Conference on Cyclotrons and their Applications},
number = {22},
publisher = {JACoW Publishing, Geneva, Switzerland},
month = {jun},
year = {2020},
isbn = {978-3-95450-205-9},
doi = {10.18429/JACoW-Cyclotrons2019-THA03},
url = {http://jacow.org/cyclotrons2019/papers/tha03.pdf},
note = {https://doi.org/10.18429/JACoW-Cyclotrons2019-THA03},
}
or: https://doi.org/10.18429/JACoW-Cyclotrons2019-THA03
The client is web based and can be accessed from any modern browser on any modern OS..
We currently only build and test on Ubuntu and Chrome. We unfortunately don't have the time to test on the other systems. In theory all up to date Linux systems should be supported.
The docker containers for RAS run in network mode host. This is done to enable EPICS to communicate seamlessly with any IOC's on the same subnet as the host. Other OSes such as Windows may not support the host mode and will run in the bridged mode. This may break the communication between the micro services. It is therefore recommended to run the RAS containers on a Linux VM that is minimally running Ubuntu Server. Please ensure the the VM network interface is assigned an IP on the same subnet as your EPICS network in order for communication with the IOC's to occur seamlessly.
V5.0.0 Friday 02 February 2024 Major Updates:
- Package updates to Backend modules
- Updated to Epics 7 and Python 3.12.1
- Moved from Create-react-app to Vite
- Package updates to all Node modules
- Updated to the latest Node LTS
- MUI has been updated to the latest packages
- Docker multi-stage builds for speed improvements
- Preview of an AreaDector Appliance user interface with included simulation
- Named MongoDb volumes for easier management
- See the migration guide to migrate from V4.0.3 to V5.0.0
V4.0.3 Friday 20 October 2023 Minor Updates:
- Package updates to all Node modules
- Updated to the latest Node LTS
- MUI has been updated to the latest packages
- Package updates to pVServer Python packages
- Fixed pvServer Flask, Werkzeug dependencies.
V4.0.2 Thursday 13 July 2023 Minor Updates:
- Package updates to all Node modules
- Updated to the latest Node LTS
- MUI has been updated to the latest packages
- A few minor bug fixes to the pvServer
V4.0.1 Friday 24 March 2023 Minor Updates:
- Package updates to all Node modules
- Updated to the latest Node LTS
- MUI has been updated to the latest packages
- Changed the contact information to Github Discussions: https:/React-Automation-Studio/React-Automation-Studio/discussions
- A few minor bug fixes to the slider and the context menu
- Previous version of google sign in is being deprecated (see https://developers.googleblog.com/2021/08/gsi-jsweb-deprecation.html )Solution is to replace "react-google-login" with @react-oauth/google
V4.0.0 Wednesday 3 August 2022
Major Updates:
- Update to React 18.2.0
- Update to MUI 5.9.2, see the section on breaking changes below
- All NodeJs packages have been updated to latest versions except react-router-dom.
- ReactVis was dropped and components have been updated to use Plotly.js
Minor Bug Fixes and Updates:
- Minor formatting and theme changes due MUI update
- General clean up of code formatting in both pvServer and React (prior upgrading the MUI library)
- Addition of Poetry as Python package manager
- Addition of Black as a formating tool for Python. A merge request will fail if Python is not formatted accordingly. The tool Black is included into development section of Poetry.
- Restoration of GitHub pages build. The build excludes style guide documents because they include double braces ({) in examples which are treated as an output markup by Liquid.
- Minor documentation clean up: links to repositories/ projects up to date.
Breaking Changes:
- ReactVis was dropped
- Update to MUI 5.9.2 from Material UI 4
Follow the migration guide at: https://mui.com/material-ui/migration/migration-v4/ and apply the preset-safe code mods https://mui.com/material-ui/migration/migration-v4/#preset-safe - If you customized any of the themes be sure to update it in line with the base themes that come with the master repo
- Removed Deprecated ActionFanoutButton - use ActionButton instead
- Removed Deprecated SwitchComponent - use Switch instead
- Removed Deprecated SimpleSlider - use Slider instead
V3.1.0 Wednesday 25 August 2021
Minor Bug Fixes and Updates:
- Hot fix in NodeJs Docker files for new npm registry requirements, previous releases will fail after 1 October 2021
V3.0.2 Monday 23 August 2021
Minor Bug Fixes and Updates:
- pvServer: minor bug fix
- StyledIconIndicator: non zero values default to onColor
- Docker: standardised to Python 3.8.7 in all Python images
V3.0.1 Monday 28 June 2021
Minor Bug Fixes and Updates:
- GraphY: Fixed timestamp issue
- Alarmhandler: Minor bug fixes- Implemented non blocking queue to improve Signal notification throughput
- Nginx: Fixed a waring on a script
- pvServer: minor bug fix
V3.0.0 Monday 24 May 2021
Improvements and new features:
- New web based administration
- Nginx now serves the static files, performs the transport layer security and load balancing
- AlarmHandler now supports Signal notifications, improvements to the user interface
- Simplification of environment variables
- Improvement of security features, with move from Access tokens, to short lived Access tokens with Refresh tokens
- External Authentication via Active Directory or Google Authentication
- Removal of the requirement for the prefix for EPICS process variables
- Improvement of the MongoDb hooks
- Component updates:
- GraphY is now based on Plotly
- GraphXY is now based on Plotly
- Package updates
- Minor Bug Fixes
- Removal of the old file based administration
- Environment variable names have been simplified
- GraphY and GraphXY background now defaults to the theme.palette.background.default value
V2.2.0 Wednesday 20 January 2021
Improvements and new features:
- AlarmHandler now supports email notifications
- New Components:
- New ArrayContainer
- New LightPanel
- Upgraded to Socket.IO 3.1.0
- Upgraded pvServer to Flask-SocketIO 5.0.1
- Package updates
- Minor Bug Fixes
V2.1.0 Tuesday 20 October 2020
Improvements and new features:
- Added Epics Archiver Viewer component
- Package updates
V2.0.1 Tuesday 29 September 2020
Improvements and new features:
- Added logging to pvServer
- Minor bug fix to pvServer
V2.0.0 Wednesday 5 August 2020
Improvements and new features:
- Updated to React Hooks based components
- Introduction of new RasAppCore component, the logic in App.js is replaced by this component
- Created the new component Widget that is the base component for all Widgets.
- PV component substitutes old DataConnection component.
- Dynamic connection: When useMetadata props is false some fields, such as min, max, prec, alarm and units, are read from external PVs or an additional connection with those fields is established. By default useMetadata prop is false.
- New Layout with new themes.
- All buttons can receive and icon.
- All components extending MUI components can pass MUI props to the MUI components through a special prop (it changes based on the component).
- All components can have a tooltip.
- Widget base components now accept macros in the label and units
- Integration with MongoDb database with the addition of Mongodb hooks to setup a watch, and perform an update and insert a MongoDb document.
- Update of all demos to Hooks based components
- Update of all beam line components to Hooks based components, with new documentation
- Create new experimental sections to hose previews of new components
- Preview Components
- Preview release of the Alarm Handler server and client UI
- Preview release of the Load/Save client UI
- Deprecated Components: These components will be removed in future releases
- SimpleSlider -> Use Slider
- ActionFanoutButton -> Use ActionButton
- SwitchComponent -> Use Switch
-
Removed Component:
- GraphMultiplePVs
-
Breaking Changes:
- routes.js was renamed Routes.js and now contains extra logic to enable dynamic or isolated routes based on the use role.
- If you added extra logic to the App.js you will to adapt to the new RasAppCore component.
- Packages updated in both RAS and RAS-Example-Project-1
V1.2.4 Thursday 2 April 2020
Minor bug fixed in the styleguide for GraphY and GraphXY Updated to React-style-guidist 11.0.4
V1.2.3 Wednesday 11 March 2020 Node 12.16.1 LTS Material UI 4.9.5 React-style-guidist 11.0.1 Fixed height props and added in an aspect ratio in the progress bar and tank components V1.2.1 Monday 17 February 2020 Minor updates
Updated to React-Scripts 3.4.0
V1.2.0 Tuesday 11 February 2020 Major updates
Updated to React 16.12.0 Updated to Material-UI 4.9.2 Updated to Node LTS 12.15.0
Changed the version of Python in pvServer to 3.7.5 from 3.7
V1.1.0 Thursday 28 November 2019 Note: The compile of PyEpics breaks with the latest version of the Python 3.7 docker image and appears to be an issue in Python 3.7.6. Either fix the dockerfile to version 3.7.5 or move to React Automation Studio V1.2.0 -11 February 2020
Changed disconnection indicators for all components
Components added: BitIndicators GraphXY GraphY
Components to be deprecated in future: GraphMultiplePVs, replacement is GraphY
Major package updates:
Updated to React 16.11.0 Updated to Material-UI 4.7.0 Updated to Node LTS 12.13.1
V1.01 Friday 25 October 2019
Minor bug fix to Selection List and Radio Button Group components
Updates to documentation, explanations of initial local variable value properties that were missing from some components.
V1.00 Monday 21 October 2019 Initial Public Release