-
Notifications
You must be signed in to change notification settings - Fork 32
Expose Table's current sort order #115
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
Comments
Not sure if this is the same, but I think I was just experiencing this need. If I create a table like this: viewof selected = Inputs.table(data)
|
To follow up on this discussion, here is a video demonstrating my view of the problem. |
@john-guerra's suggestion would be consistent with what Inputs.table does when passed a sort option; I wonder if we couldn't just do the following: index bd2df74..451d73a 100644
--- a/src/table.js
+++ b/src/table.js
@@ -238,6 +238,7 @@ function initialize(
while (tbody.firstChild) tbody.firstChild.remove();
appendRows(0, n = minlengthof(rows * 2));
anchor = head = null;
+ root.dispatchEvent(new CustomEvent('input', {bubbles: true, detail: {sort: column, reverse: currentReverse}}));
reinput();
} demo at https://observablehq.com/@fil/table-sort-115 ; this also allows to listen to the input event and check if it's a sort event, addressing @mootari's request. |
@Fil I don’t think that’s quite enough; if there’s a selection, the selection should appear sorted, too. But currently it looks like the selection is ordered by the order in which rows were clicked. |
I thought it worked because I had only tested sorting a selection; however I hadn't thought about adding elements to a selection while there is an "active" sort (which didn't work; now fixed). |
A Table input's current sort order is only tracked internally. This poses a problem if a notebook author wants to persist the current sort state, e.g. via a permalink.
Suggested solution
When the sort column or order is changed, dispatch a custom sort event:
Workaround
The instantiating cell can listen to
click
events and parse order and column name fromevent.target.textContent
. This technique is error prone and expected to break once additional features (like custom table names) have been added.The workaround is currently implemented here: https://observablehq.com/@mootari/sortable-notebook-list#selection
The text was updated successfully, but these errors were encountered: