Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

See also: PlutoTables #16

Open
aplavin opened this issue Jul 4, 2023 · 3 comments
Open

See also: PlutoTables #16

aplavin opened this issue Jul 4, 2023 · 3 comments

Comments

@aplavin
Copy link

aplavin commented Jul 4, 2023

Noticed StructBond and NTBond here. You may also be interested in PlutoTables that specializes on tabular input UIs. It can either create simple objects (eg NamedTuples) from scratch, or modify existing objects -- all with a pretty consistent API without any real boilerplate, and supports basically anything you throw at it.

NamedTuples

image

Arbitrary objects (here - `Complex`)

image

@disberd
Copy link
Owner

disberd commented Jul 4, 2023

Hi @aplavin

Thanks for the heads up. I do remember checking your package briefly after you metnioned it in a Pluto discussion.

In my case those two were tightly connected/integrated with additional functionalities coming out of the overall floating BondTable that is also provided by this package and can be seen in the example notebook.

Things like resizable/draggable table, having each NTBond or StructBond be collapsible in the table, the possibility of having inner complex elements as popout on hover (and independently draggable around when popped out), and also the reactivity toggle (the green toggle button) that would stop temporarily bond update to avoid excessive recomputations while modifying multiple bonds in a StructBondo or NTBond.

I also wanted to add the possibility of easily providing custom HTML for hovering events upon table fields/rows (see #14).

Nonetheless I think your package is quite cool and I might investigate seeing if it can be integrated in the table i provide while still being able to provide the additional functionality I listed above (unless they are already available in your packages and I do not realize).

In any case we definitely have a significant overlap in functionality and I would be willing to have a chat to discuss whether there is a way to come to a unified approach and maybe combine efforts on this front.

Let me know your thoughts!

@aplavin
Copy link
Author

aplavin commented Jul 4, 2023

Yeah, I'm not saying these are duplicates, just that there's clearly some overlap.
I went for less (none for now :) ) JS-based interactivity in PlutoTables. It's really great that Pluto allows to do so much in pure Julia!

overall floating BondTable that is also provided by this package

Pinning a set of inputs/outputs so that it stays in one place is very useful indeed. I often use PlutoTables with Sidebar from PlutoUIExtra, it's convenient to have one sidebar with inputs and one with a few main diagnostic numbers/plot.

That Sidebar, and UIs themselves, are "static" and not draggable though - I don't really like to write in JS :)
The reactivity toggle idea is nice btw! Didn't think of it.

I should note that PlutoTables is pretty simple, just ~150 LOC - it only handles the UI itself. The "backend", actual object construction and modification, is handled by the Accessors package.

@disberd
Copy link
Owner

disberd commented Jul 4, 2023

I also prefer immensely working directly in Julia, I actually only learned JS in order to understand better and tinker with both Pluto and PlutoUI.
But I have to admit that it's nice to have some basic JS understanding for many things, and you can really push what is achievable in Pluto as well by knowing some JS.

The resize/draggability of my table is also mostly provided by a JS library, so the code for that is quite limited on my implementation and it's nice because it works across browsers and platforms. (which is something that with a custom JS implementation will be more difficult to achieve).

The colleagues of mine who use this functionality also work with very disparate settings for Pluto style (in terms of width of cells and screen size) so having a way to get a floating table that is movable and resizable is much easier for them, as opposed to something static that when changing cell width or screen size might overlap with content.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants