damies13 / rfswarm

Robot Framework Swarm
GNU General Public License v3.0
112 stars 22 forks source link

Consider a HTML/CSS style GUI for manager and Reporter #247

Open damies13 opened 3 months ago

damies13 commented 3 months ago

Is your feature request related to a problem? Please describe. Using HTML should make constructing the GUI easier to control and CSS should enable a prettier UI as well as making dark/light mode switching easier

Describe the solution you'd like Consider a HTML/CSS style GUI for manager and Reporter

Additional context The original idea I've been pondering for quite a while is to build an "electron" style app, but never knew how to do this with python apps, until a few days ago I found python-eel

I believe the pro's should outweigh the con's, here are what I think they are:

Pro's:

Con's:

damies13 commented 3 months ago

I've created a mock up of just the about screen to give an idea what the UI could look like if this change

Light Mode Dark Mode
image image
Firefox (remote access)
image
damies13 commented 3 months ago

These are the files from the mock up for future reference eel-test.zip

damies13 commented 3 months ago

@PyHar, I think enough time has passed, and it's only been positive feedback so lets proceed with this idea.

There is an issue remaining to figure out, eel creates a http server (on port 8000 by default, though it's configurable) and rfswarm manager already has a http server on port 8138 by default, so no conflict, though I would rather have only 1 http server port if possible, so the first issue to figure out will be if we can tell eel to use the existing http server in rfswarm or get eel's http server to provide rfswarm's existing rest api (even if that means re-writhing the api code?

Do you want to start investigating what our options will be for this issue?

damies13 commented 2 months ago

Today was out but had some time for research, I think I found the answer how to do the existing rest api in eel:

So it seems we'll need to create a POST bottle route for each rest endpoint and re-write the rest API this way.