[Repository] Gateway Utilities

I started putting together some reusable scripts, and I thought I would share with the community.

This project contains some utilities that can help in the development and administration of some Ignition projects. I am planning to continue development on it as I need more features, and look forward to anyone submitting feature requests that they think might make sense, and deploying these tools into their own projects. Everything in this is built with native Ignition functionality, no additional modules required, and should be able to be cleanly dropped into any existing project.

A few features that exist in it today:

Config File Manager

This is a view that enables the creation of config files on the gateway, as well as some general scripting functions to streamline the use of those gateway specific config files. It makes it a lot easier to do something project agnostic like General.Config.get_config_value("apps.sap.client_id") than hardcoded strings.

Feature Flag Manager

This is a view that adds a table to add/remove and enable/disable feature flags in the application. This also adds some functionality for using the feature flags via scripting, or a decorator to reroute function calls.

As well as some convenience scripting for the following:

  1. File Management
  2. Multithreading
  3. General Utilities Functions

All of the code is currently being packaged into an archive file that can be direct installed into Ignition on the releases page


From the great idea by @PGriffith I updated the multithreading utility code to use java.lang.Thread and cleaned it up a bit further.

Now any of the async execution threads fired off will all show up in the gateway diagnostics threads under the function name being called.

A few ideas I have next:

  • Implementing the In-designer theme customization created by @rbabcock next.
  • Adding in the boilerplate for version controlling tags, as well as some simple documentation on how to do so affectively
  • A general diagnostic viewer for things like session props, what's in the globals, remote session props, etc.
    • I think taking my custom json viewer built on the Tree component and making it more generically re-usable would be good here.
  • A tool for syncing your session props with a remote client session, so you can re-create the user experience.
  • Breaking the contents of the project down into "Features" so that you can choose to download specific features instead of the entire project.