[ANN] TableView.jl

Hi all,

I’d like to announce TableView.jl, a WebIO.jl based package for inspecting arbitrarily large Tables.jl-compatible tables (DataFrames, Queryverse-tables, etc…).

Multi-column filtering and sorting works for small datasets (< 10k rows) and is completly handled by the frontend. For large datasets (which are lazy-loaded into the UI, so there’s nothing stopping you from viewing tables with arbitrarily many rows) this does not work yet, but could be implemented in the backend.

It might be possible to extend this package’s functionality to include editing cells, but there are no immediate plans for that from my side.

IJulia and Juno* natively display the output of showtable, but if you’re working in the REPL you’ll need to use e.g. Blink.jl to display the table (see screenshot above).

*) Only works with WebIO 0.7.x right now, but I’m working on a fix for newer versions.

30 Likes

Nice! Works very solidly, thanks for all the work you (and Shashi) put into this. One minor comment: I think it’s perfectly fine to go for lazy loading (and I’m impressed by the excellent performance on a large dataset I’ve tested with) but it may be better to disable the filtering and sorting buttons when the data is too big and they don’t work (if there is a simple option for this in the javascript library), otherwise they are a bit misleading.

2 Likes

Great! This was of the few remaining reasons I use Stata for data analysis instead of Julia.

The next major reason is Stata’s great support for panel data. It does lags and differences as a simple L.varname or D.varname once you’ve specified the ID and time keys.

A bit off topic but this will also be getting an upgrade as soon as a re-write for formula constructors is finished in this PR.

1 Like

Great work!

What are the basic requirements to implement this? Does it have to be an Electron window or is it just anything that can render the html?

Also I agree with piever, a slightly more lightweight option would also be cool.

Anything that can render WebIO contexts, which means HTML+JS+WebSockets, basically.

I don’t think he wanted a more lightweight option, just that the filter and sort buttons are disabled unless they actually work (which I definitely agree with). You can look into BrowseTables.jl for a pure HTML solution though.

1 Like

v0.2.0 is out now, with a few improvements:

  • better default for table height (#11)
  • hide filter/sort buttons for async tables (#12)
  • use fixed ag-grid version (#13)
7 Likes