Perspective Table Subview - Row disappearing keeps subview open on row that takes its place

Version: 8.0.16 (b2020082513)

I have a perspective table with a subview. The table shows alarms and on the subview there is an option to shelve the alarm. This causes the row to disappear because the table only shows unshelved alarms.

When the row disappears, a subview stays open and because the row it was open on is gone, the new row that has taken its place has the subview open.


In the above image I shelve ALARM A and the row for ALARM A will disappear.


In the above image, the subview stays open on ALARM B because ALARM B took ALARM A’s place.

I want the subview to close once the row disappears.

Is this an unintended feature or a bug?

Thanks

1 Like

I have the same issue, looking for a solution.

This isn’t a bug or an “unintended” feature - it is an intended feature.

Think about it this way: A table’s data usually comes from a binding, and that binding is usually polling some underlying data source. Imagine how frustrating it would be if you expanded a row, only to have it collapse on you every time your data was updated!

The issue here is that the table’s understanding of the data’s meaning is too primitive. All it knows is that “Row X was expanded, so keep it expanded” without any understanding of the idea that the data that used to be on row X has moved to row Y or has been removed altogether. I think the only way for us to support a smarter version of this would be to have some kind of optional designation of a column as the “key column”. Right now, the row’s index is the implicit “key” of the row. But if you could specify your own data key, then the table would understand that it isn’t “Row X” that is expanded, but rather, “The row with this data key” where that key is a timestamp or a unique number or something.

Also, FYI, we’re adding scripting functions to programmatically expand and collapse rows, so at least in the meantime you’ll be able to control this function yourself.

2 Likes

Any idea of the timeline on these functions?

It would be super helpful to be able to call a table component method to close its subviews.

For example, if the user interacts with a button or dropdown that filters the table, that component’s commit event could also:
table = self.getSibling(“TableName”)
table.collapseSubviews()

Also, often a user will open many row subviews to make changes and would like a button/method to quickly close them all.

An optional parameter for row number would also be great for calling this from a table’s onRowDoubleClick event

Issue IGN-1985 is in our ticket system for this feature, but it has not begun the development process. I don't have a good way to provide an ETA because we work on issues as availability allows and we have to prioritize bug fixes and component-sized features.

The ticket would actually introduce a function along these lines for closing subviews:

self.getSibling('Table').collapseSubviews([])

where that array could have 0-to-many integer values and an empty array would mean "collapse all". This isn't final implementation, but it doesn't make sense to have one function for closing all and a separate function for closing 1-to-many. We need one function which could close 1, many, or all. The proposed function would indeed accept a singular integer value within the array which would be the rowIndex of an onRowDoubleClick Event as you described to collapse just that row.

1 Like

Hi is there something now? I tried collapseSubviews() is not yet available.
Thx

No, we haven’t begun work on this feature yet. It looks like it will begin in the next couple of weeks.

2 Likes

New table subview functions were added on Release 8.1.17 (May 2022), I have not tested them yet:

The Table component now has two scripting functions: expandSubviews and collapseSubviews. ExpandSubviews takes in an array of indices of rows to expand (will only expand rows that are currently visibly displayed on the table) and collapseSubviews takes in either an array of indices of rows to collapse (will only collapse rows that are currently visibly displayed) OR no parameter at all to collapse all currently expanded subviews that are part of the current visible data.