[Engine-devel] Sorting in tabs

Lior Vernia lvernia at redhat.com
Thu Jun 27 12:53:59 UTC 2013



On 27/06/13 15:37, Einav Cohen wrote:
>> ----- Original Message -----
>> From: "Eli Mesika" <emesika at redhat.com>
>> Sent: Thursday, June 27, 2013 6:46:58 AM
>>
>>
>> ----- Original Message -----
>>> From: "Lior Vernia" <lvernia at redhat.com>
>>> To: engine-devel at ovirt.org
>>> Sent: Thursday, June 27, 2013 10:12:33 AM
>>> Subject: [Engine-devel] Sorting in tabs
>>>
>>> Hello everyone (UI peeps in particular),
>>>
>>> I've pushed (not yet merged) a patch that would enable us to keep items
>>> in tabs (main/sub) sorted at all times by setting a comparator in
>>> SearchableListModel:
>>
>> But tabs includes only 100 records and supports paging , how you deal with
>> that ???
> 
> if this is in the GUI level, then I assume that the comparator is simply comparing the 
> items within the current page, and not "globally".
> so the sorting doesn't affect the set of items that is displayed in the page (it would 
> be the same as before the sorting) - just their order.

Yes, if I understand correctly how the paging works, Einav is correct -
only the items passed to the UI are sorted.

> also: @Lior - what happens when the search query contains a "sort by" part? 
> there is a chance that the behaivor would be unexpected in this case; 

Yes, I thought about this case, and it may result in a confusing user
experience if developers aren't careful. Together with the issue of
paging, this probably makes this sorting mechanism a better candidate
for use within subtabs rather than main tabs.

> 
> I believe that the correct thing to do is to "attach" the GUI sorting mechanism 
> to the one in the search mechanism.
> 
> thoughts?

This can be done, however I'm not sure there's much utility in it. Main
tabs are always sorted according to some default ordering even if one
was not entered in the search panel, and this sorting is also performed
consistently with respect to paging. So maybe the right thing to do
would be to just "block" the GUI sorting mechanism for main tabs (i.e.
override the setter method and make it no-op)?

>>
>>
>>>
>>> http://gerrit.ovirt.org/#/c/15846/
>>>
>>> If a comparator isn't set, then everything should behave as before. If a
>>> comparator is set, then from that moment on the tab items will be kept
>>> in a SortedSet, so that even if an item is added in a way that doesn't
>>> trigger an event (e.g. getItems().add()) the items will be kept sorted
>>> according to the given comparator. If the comparator is set to null,
>>> from that moment on the tab should revert to its old behaviour.
>>>
>>> You're most welcome to have a look and let me know if this might break
>>> something (remember though that it's not obligatory to set a comparator,
>>> so only possible breakage should be in generic flows).
>>>
>>> Feel free to use it once it's merged; along with SortedListModel, this
>>> should make sorting less painful. Just keep in mind that once you set a
>>> comparator, you can't cast getItems() to a List. This shouldn't be a
>>> problem in general, as mostly it's as useful (and probably more correct)
>>> to cast to a Collection.
>>>
>>> Lior.
>>> _______________________________________________
>>> Engine-devel mailing list
>>> Engine-devel at ovirt.org
>>> http://lists.ovirt.org/mailman/listinfo/engine-devel
>>>
>> _______________________________________________
>> Engine-devel mailing list
>> Engine-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/engine-devel
>>



More information about the Engine-devel mailing list