m-labs / artiq

A leading-edge control system for quantum information experiments
https://m-labs.hk/artiq
GNU Lesser General Public License v3.0
437 stars 201 forks source link

Dashboard TTL Panel Tweaks #603

Open dtcallcock opened 8 years ago

dtcallcock commented 8 years ago

We have a few suggestions for improving the TTL panel in the dashboard. I understand that QT bugs that nobody wants to fix may be the reason for some of the things we don't like.

dnadlinger commented 8 years ago

There's a lot of unused space in the boxes. This means the panel either takes up a lot of screen real estate or you have to scroll up and down.

Amen. We are running with quite a few channels now, and the UI is rather painful to use – for the 64 that do work with moninj in the first place, that is.

Another way of dealing with the above would be to have a way of moving all the TTL channels we interact with regularly to the top of the panel. This could be achieved by having multiple groupings of TTLs, for example by adding an optional numeric argument sort_group to the device_db entries for TTL channels.

We were thinking of something similar, although I would have probably gone with a string for the grouping (more flexible, you can still do alphabetical order, and optionally even use it for UI grouping to zoom in on interesting subsystems as required).

We would like to be able to append a short comment to the name instead of having it as a tooltip.

This seems a bit at odds with your point about information density, which I wholeheartedly agree with. Perhaps we could have two different UI modes: firstly, a compact display that is ~6x more dense than the current state by just displaying a (potentially shortened) identifier and the state, probably with some form of colour-coding, and secondly, a mode similar to the current one with the comment strings displayed? I'm a bit hesitant to suggest this – we really want to avoid feature creep at this stage –, but in my experience, having a complete overview of the state of complex real-time systems is immensely helpful as a first step to debugging. For what it's worth, I've come to this conclusion not only as an ion trapper, but also from working in live lighting/audio engineering.

sbourdeauducq commented 8 years ago

Instead of 'Override' and 'Level' have 'Override 0' and 'Override 1'.

We considered this, and the rationale for the current design is you can repeatedly toggle the same TTL by clicking without moving the cursor. Which is more important?

sbourdeauducq commented 8 years ago

adding an optional numeric argument sort_group to the device_db entries for TTL channels.

I'd rather keep GUI stuff out of the device database. What about handling this inside the dashboard alone (and saved in artiq_dashboard.pyon), with a drag-and-drop interface?

dhslichter commented 8 years ago

I think the use case is more likely that one goes from computer-control to manual override with a particular value and back to computer control, less likely to go to override and toggle state back and forth rapidly. You might go to override, set state, do some work on the optical table, set to the other state, and so on....but I can't think of times when I have been clicking on/off/on/off in rapid succession.

dtcallcock commented 8 years ago

We would like to be able to append a short comment to the name instead of having it as a tooltip.

This seems a bit at odds with your point about information density,

The idea is that we would only append very short comments (a couple of numbers/letters) that we want to be easily visible, eg. to denote some temporary change in the device connected to that channel. As suggested, the tooltip comment could be retained as a separate field for longer, more descriptive comments.

What about handling [TTL sorting] inside the dashboard alone (and saved in artiq_dashboard.pyon), with a drag-and-drop interface?

I don't have a problem with this.

jordens commented 8 years ago

I have been toggling the manual value at least as much as I have toggled override. Oven toggling, adjusting overlap between two beams means all mean toggling between force-on and force-off. I would very much advise against mixing the level and the override functionality in that way. To me, this goes against all concepts of UI design.

My recommendation would be to use the "tristate" QCheckBox feature ("no change/partially checked" intuitively and naturally meaning "no override"). That saves a lot of space by getting rid of an entire checkbox. Then toggle tristate with ctrl or shift-LMB.

I would also like to see well chosen keyboard accelerators and usable keyboard navigation for that panel. Well thought-through mouse-accelerated and keyboard-accelerated operation is really helpful once one hase become sufficiently literate with the UI.

Making moninj much more compact is excellent. I tried to push and advocate for that when it was built initially. Checkbox labels like 'override' and 'level' are repetitive and should not take up space at all.

dtcallcock commented 8 years ago