Currently, I have a Server that has many different modules (Audi A1, Audi R8, etc.) with 4 different states (RESET, Monitor, Closing, and On). Each module also contains 6 data points that change over time (such as current MPH, current gas usage, total miles, etc.)
When a module's state is On, the 6 data points change frequently (MPH increases or decreases, total miles go up, current gas usage varies.) When the module goes to Closing from On, the 6 data points stabilize and eventually stops changing (MPH decreases to 0, gas usage stops, total miles stabilizes at one point.) Finally when the module is on Monitor or RESET, the data points do not change at all.
To make it easier for the user to control and visualize the module's state and data, I created a GUI Client that can communicate with the Server over the network. Module information (current state and data points) is communicated constantly from the server to the Client, who then displays the information accordingly. The Client can also communicate user requests to the Server.
The Client has a slider for the user to request a change of state for each particular module on the Server. When the user slides the slider, a network message will be sent off to the Server who will then change the state of the module accordingly.
The particular module's new state on the server is then communicated over the network to the Client and is then reflected by the Green colored text on the Client's GUI.
In addition to the slider, each module GUI also displays the Server's module's data (not shown in picture, but would appear to the right of the slider.)
The slider GUI was chosen due to the module's state being linear (to go from Monitor to On, you must go to Closing first.)
Each morning, the modules are in the “Monitor” state. The user then has to go to each of the modules in order to turn them all "On". With the addition of more modules (30+), our users requested an easier way to turn all the modules on in the morning and be able to change them all to "Closing" in case of an emergency.
To address this request, I plan on adding a new feature to change all the modules to a certain state (such as turning all of them to "On".) Since the states are linear, I am considering doing the intermediate steps (states in-between module's current state and the new desired state) for the user in the code.
Adding an additional slider to control all the modules would work. However, there isn't any feedback in the all-state-change slider if any of the modules fail to change states. To amend this problem, I'm considering adding a logger GUI that will print the names of any modules that did not change states correctly.
My users are not technical and I was wondering if there is a better way to add an intuitive state changer.