Skip to content

React-Automation-Studio/codespaces-demo

 
 

Repository files navigation

Current Release: V5.0.0

Introduction

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

Contributing

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

Contact us at Github Discussions: https:/React-Automation-Studio/React-Automation-Studio/discussions

Cite us

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

FAQ

1. Which operating systems are supported?

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.

2. Are other systems such as Windows or Mac OS 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.

Changelog

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
New Features:
  • Docker multi-stage builds for speed improvements
  • Preview of an AreaDector Appliance user interface with included simulation
  • Named MongoDb volumes for easier management
Breaking Changes:
  • See the migration guide to migrate from V4.0.3 to V5.0.0

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
Minor Bug Fixes and Updates:
  • 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
Minor Bug Fixes and Updates:
  • A few minor bug fixes to the pvServer

V4.0.1 Friday 24 March 2023 Minor Updates:

Minor Bug Fixes and Updates:
  • A few minor bug fixes to the slider and the context menu
Minor Breaking Changes:

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:

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
Breaking changes:
  • 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

About

React Automation Studio Codesanbox.io Demo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 80.9%
  • Python 11.2%
  • TypeScript 2.7%
  • C 2.2%
  • SCSS 1.0%
  • MDX 1.0%
  • Other 1.0%