Edit [and show, wip] arbitrary Julia objects in a tabular interface. Based on Pluto and PlutoUI for interactivity, Accessors and AccessorsExtra for object modification.
Pluto and PlutoUI interactivity is very convenient, but those widgets only support basic types like numbers and strings. Often, one needs to edit an arbitrary object, with potentially nested and repeated properties. PlutoTables provides several tabular input widgets for Julia objects, see the notebook for a list of examples.
Specific parameters to edit are specified using the Accessors/AccessorsExtra optic syntax, and can include a wide range of transformations or selection functions.
A simple example of a tabular UI for editing a tuple-of-namedtuples:
each in a different cell. Unfortunately, this makes it difficult to see the plot they are manipulating. Organizing the sliders into a R x C table would make things easier to see. Is there a way I can accomplish that with your package so I can see the the slider variable labels (e.g., x1)? The row and column labels would not be necessary in this case.
Currently, PlutoTables only does columns and rows in a “systematic” way: eg, a column for each element of a collection, a row for each property of that object.
For convenience, you can combine your variables into a struct, or a couple of structs that make sense in your case. Then, PlutoTables can create a widget per struct, potentially saving space already.
Also, it’s often convenient to place PlutoTables widgets that control plots or other major outputs into a sidebar that stays aside and doesn’t scroll with the main notebook content.
This looks like this (add @binds to actually obtain object values):
Thank you, the sidebar is extremely useful when I have to analyze data. I can have a selection of dataset, algorithms and metrics and generate the graphs I need to analyze on the fly. This is much easier than having to scroll up and down generating the graphs or placing the selector in the most convenient place of the notebook.
One thing I’d like would be the ability to indent the sidebar a bit: I have a large screen and “center left” is a bit too far away from the code where I’m actually working.