nkh / P5-App-Asciio

Plain ASCII diagram
https://nkh.github.io/P5-App-Asciio/
54 stars 4 forks source link

Add Web browser interface #18

Open nkh opened 1 year ago

nkh commented 1 year ago

@qindapao, I think it would be good to list some use cases before we start this.

use Asciio without having to install it

I have no need for this, and no one has asked for it. It will probably make it more popular but there are risks involved with it

show off skills and ease of integration

Asciio is UI agnostic, it doesn't care for display and we have a good proof of that with the TUI. A web UI using a client server interface is relatively easy to implement (although I'm keeping from web stuff as much as possible).

The complicated things are all handled in the core of Asciio, what's left is to forward events to Asciio core and handle UI objects:

A setup must also be passed to Asciio

nkh commented 1 year ago
    ┌───┐                                            ┌─────────────┐┌──────┐
    │Web│                                            │Asciio_server││Asciio│
    └─┬─┘                                            └──────┬──────┘└──┬───┘
      │                                                     │          │    
      │                    give me UUID                     │          │    
      │────────────────────────────────────────────────────>│          │    
      │                                                     │          │    
      │            UUID, waiting to start Asciio            │          │    
      │<────────────────────────────────────────────────────│          │    
      │                                                     │          │    
      │UUID, start Asciio with default setup, no compression│          │    
      │────────────────────────────────────────────────────>│          │    
      │                                                     │          │    
      │                   Asciio started                    │          │    
      │<────────────────────────────────────────────────────│          │    
      │                                                     │          │    
      │                     UUID, get diagram diff          │          │    
      │───────────────────────────────────────────────────────────────>│    
      │                                                     │          │    
      │                      diagram, digram diff           │          │    
      │<───────────────────────────────────────────────────────────────│    
      │                                                     │          │    
      │                      UUID, keyboard event           │          │    
      │───────────────────────────────────────────────────────────────>│    
      │                                                     │          │    
      │                      diagram, digram diff           │          │    
      │<───────────────────────────────────────────────────────────────│    
      │                                                     │          │    
      │                      UUID, keyboard event           │          │    
      │───────────────────────────────────────────────────────────────>│    
      │                                                     │          │    
      │                     interaction, get color          │          │    
      │<───────────────────────────────────────────────────────────────│    
      │                                                     │          │    
      │                    UUID, new color/canceled         │          │    
      │───────────────────────────────────────────────────────────────>│    
      │                                                     │          │    
      │                       UUID, mouse event             │          │    
      │───────────────────────────────────────────────────────────────>│    
      │                                                     │          │    
      │                      diagram, digram diff           │          │    
      │<───────────────────────────────────────────────────────────────│    
      │                                                     │          │    
      │                    selection, [x, y, x, y]          │          │    
      │<───────────────────────────────────────────────────────────────│    
    ┌─┴─┐                                            ┌──────┴──────┐┌──┴───┐
    │Web│                                            │Asciio_server││Asciio│
    └───┘                                            └─────────────┘└──────┘
qindapao commented 1 year ago

I agree with what you said, let's think it through before we do it. After all, this is not an urgent need at present. It is for the better development of the software in the future. We'll come back and polish it in due course, maybe the two of us, maybe another developer.

nkh commented 1 year ago

then we may need to move it to https://github.com/nkh/Asciio-2.0/issues