Hello everyone.
I have a table with four columns:
Filename, Date Added, Owner, File Type.
I have added options for the user to filter Owner and File Type (categorical variables), and Sort by date added.
I do all the filtering/sorting in the client to avoid calling to the server.
To filter, I do something like this:
def button_filter_data_owner_click(self, **event_args):
"""This method is called when the button is clicked"""
if self.options.get('data_owner', None) is None:
self.options['data_owner'] = {}
self.options['data_owner']['items'] = set([ft['data_owner']['name'] for ft in self.repeating_panel_uploads.items])
self.options['data_owner']['selected'] = set(self.options['data_owner']['items'])
show_types = alert(FilterColumnComponent(items = self.options['data_owner']['items'],
selected = self.options['data_owner']['selected'],
title="Filter by data owner"), buttons=[])
rows = self.repeating_panel_uploads.get_components()
for row in rows:
row.visible = row.item['data_owner']['name'] in show_types
self.options['data_owner']['selected'] = set(show_types)
Where FilterColumnComponent
displays a checkbox for each possible option, and when it is closed, it returns the options that were selected.
To sort, I have being doing something like this:
def button_sort_date_click(self, **event_args):
"""This method is called when the button is clicked"""
self.repeating_panel_uploads.items = sorted(self.repeating_panel_uploads.items,
key=lambda item: item['added_on'],
reverse=self.sort_date_ascending)
self.sort_date_ascending = not self.sort_date_ascending
The problem I have encountered is that, if I filter by owner
it works. But, if I then sort by date added
the whole table becomes visible again. In other words, it resets the visible
attribute to True
on all rows.
Has anyone encountered this issue? Any recommended solutions?
Thank you.
Anders.