Skip to content
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

Sort manually #1678

Open
mariush444 opened this issue Jan 1, 2024 · 13 comments
Open

Sort manually #1678

mariush444 opened this issue Jan 1, 2024 · 13 comments
Labels
state: consensus-needed A consensus needs to be reached before this can be implemented

Comments

@mariush444
Copy link

Please, add posibility to use by own - free, as user wants order.

@TheLastProject
Copy link
Member

I'm not sure if this is worth the additional complexity this introduces, but for those looking for a quick solution to this "problem" that's usable right now: if you are on Android 11 and up you can already use Catima in Android's "Device controls" menu (how to exactly access that depends on your Android version and device manufacturer) where you can choose which cards to display and in what order.

Longer response People keep asking for this. I understand the natural desire to "stay in control" but it adds a fair bit of complexity and I'm not sure if it's worth it as I feel manual sorting is a worse experience than alphabetical sorting no matter how you spin it. It definitely isn't worth *my* time as I have no interest in this feature myself, so this would need to be a third party contribution.

Basically, there are two questions:

How does it help?

If you have a low amount of cards they all fit on the screen at all time. In that case, I can imagine it being slightly faster to select the right card if you can choose where on the screen the card is displayed. But this benefit would be very minimal as getting used to an alphabetical order for just a few cards should be very quick.

However, as soon as you start adding more cards you lose the ability to quickly "scan" for the right card as there is no longer a logical sorting order like alphabetical. So for those who have more than a small amount of cards, I'd expect it to take longer to find the card you need with manual sorting instead of alphabetical.

On top of that, as an user you now have more work as you will have to keep moving cards around every time you add a new card to keep your preferred order.

(The benefit of placing cards exactly where you want them can also disappear when screen sizes change as Catima adjusts the amount of column based on the available space, although this should only affect switching between portrait and landscape mode or between a phone and a tablet.)

When managing a large collection of cards, having everything in one list would become bothersome no matter how you sort it (with alphabetical still being the fastest to scan) which is why starring (always display on top), groups (show only a subset of cards) and search already exist.

How to implement it?

Here it gets even worse. Even if we agree this should be supported there are a lot of edge cases to deal with.

The most user-friendly method would be to allow dragging and dropping cards in a desired order. However, given cards can be put in groups, you may not even currently be shown a full list of all cards. If you're only shown cards A, D and E and you move card E between A and D, where should it be put between B and C?

It seems to me that reordering cards from the main screen directly wouldn't be possible, perhaps an extra button should be displayed above the + button to start a "reorder" process if "Sort By" is set to "Manual"? We'll need some extra step somewhere to switch to a "show all cards" mode before reordering.

And what about the "...in reversed order" checkbox in the "Sort by" dialog? Should that be grayed out?

Should starred and archived still be respectively put on top or the bottom or the list, regardless of sort order? I would assume so, otherwise those features no longer make sense.


tl;dr: I'm not interested in this feature myself, I don't think it's worth the effort implementing it. But it may be worth considering if someone else implements it in an easily-maintainable way. Even then, it is important to be aware of all the edge cases, especially related to group handling, and making a decision on the UI flow before implementing this.

@TheLastProject TheLastProject added the state: consensus-needed A consensus needs to be reached before this can be implemented label Jan 2, 2024
@obfusk
Copy link
Contributor

obfusk commented Jan 2, 2024

alphabetical order

That works great for English where you can easily sort words phonetically like in a dictionary. But not for e.g. Japanese (unless you write everything out phonetically instead of using kanji). And I suspect also not for several other non-western languages.

I'm thinking it might be simplest (and worthwhile) to add an extra field to the card, and allow sorting using that field. That could e.g. be a phonetic representation of the card name, but it's up to the user what they put there. That should be trivial to implement, and require no additional custom logic or UI apart from a field and a setting to use it for sorting. The only downside I see it that it might be confusing for some users.

Not sure what best to call it (other than "custom sort" idk), but that would probably be fairly easy to implement. It might be cumbersome to reorder cards depending on what custom logic one uses, e.g. using numbers to directly specify a completely custom ordering would be possible but hard to manage, but phonetic representations would "just work" (assuming those do have a proper order like in Japanese). But I think it's reasonable to leave that up to users that want the feature to deal with.

@mariush444
Copy link
Author

Thank you very much for so many effort for response.
But it seems that it would be much faster to add one column more for sorting inside the group.
Anyway, good apk. Happy New Year.

@TheLastProject
Copy link
Member

That works great for English where you can easily sort words phonetically like in a dictionary. But not for e.g. Japanese (unless you write everything out phonetically instead of using kanji). And I suspect also not for several other non-western languages.

Given the alphabetical sorting uses the official Java method I would assume that the sorting method is still a method users are used to even for languages that aren't truly "alphabetical".

I'm thinking it might be simplest (and worthwhile) to add an extra field to the card, and allow sorting using that field. That could e.g. be a phonetic representation of the card name, but it's up to the user what they put there. That should be trivial to implement, and require no additional custom logic or UI apart from a field and a setting to use it for sorting. The only downside I see it that it might be confusing for some users.

The downside of "might be confusing" is a very severe one. And also, it complicates the UI and does not use the commonly expected way of sorting in pretty much every single other app that is dragging-and-dropping. That is a hard no-go for me.

@obfusk
Copy link
Contributor

obfusk commented Jan 2, 2024

Given the alphabetical sorting uses the official Java method I would assume that the sorting method is still a method users are used to even for languages that aren't truly "alphabetical".

There is no reliable way to programmatically sort kanji that makes sense. So there is no "method users are used to", not a useful one. You get the order of unicode code points, which is not in any way useful for people. It might as well be random. So I don't think your assumption is correct.

For example, using the kanji for the numbers 1-5 (一二三四五) you get 1,3,2,5,4 (一三二五四) when sorted, which is completely useless IMO as it has no relation to their meaning or their pronunciation. And I had to look that up because I cannot even predict the order reliably (other than that more complicated kanji tend to sort later -- I'm sure there's some logic behind it but it's not in any way useful for how people use the characters in daily life or in any way related to the order the words they are used to spell would appear in a dictionary, at least not in Japanese).

The downside of "might be confusing" is a very severe one.

Agreed. And I'm not sure what the best choice is here. I think phonetic spelling would be useful for e.g. Japanese but I would hope to find a solution that works for other languages and use cases as well. At least that was the intent of my suggestion here. Discoverability is very much an issue of course.

And also, it complicates the UI and does not use the commonly expected way of sorting in pretty much every single other app that is dragging-and-dropping. That is a hard no-go for me.

If you explicitly add e.g. a "phonetic spelling" field, you get a much more usable way of sorting than by name in languages like Japanese. And for that, dragging-and-dropping makes no sense whatsoever. Where it gets tricky is trying to make that more generic so it doesn't just work for the specific case of "phonetic spelling", with the extreme example of using numbers for complete control over the ordering if you really have no useful other way to sort and want a very specific order anyway. I would certainly not recommend that, but it would be possible.

So my suggestion wasn't intended to replace true manual sorting. For that, dragging-and-dropping would make sense, yes. It was meant to provide an option in cases where it makes sense to have a field that can be sorted on when the name cannot be used for that in a meaningful way, as in the example of Japanese.

I don't know if that solves the use case of @mariush444 though, as it does only work if there is such an alternative. It solves the problem that several languages currently have no meaningful way to order cards by name but where such a meaningful ordering does exist and can be easily provided by the user via a custom field. But it is indeed a rather bad solution for true manual ordering, nor is it intended to be one.

@obfusk
Copy link
Contributor

obfusk commented Jan 2, 2024

TL;DR: I generally agree with @TheLastProject on manual sorting. But that got me thinking about languages like Japanese where sorting by name currently isn't meaningful and where sorting by a custom field would allow sorting by phonetic spelling instead and wondering whether such a custom field would also be a solution for those currently asking for the option of manual sorting.

@TheLastProject
Copy link
Member

I'm not really interested in adding yet another field to the edit screen, especially one that would be so rarely used and so hard to explain. I'd much rather have a full manual sorting implementation than an extra field on the edit screen. Having stuff be easy to understand is a priority, Catima should always remain easy to use even for the most non-technical users.

@obfusk
Copy link
Contributor

obfusk commented Jan 2, 2024

Having stuff be easy to understand is a priority, Catima should always remain easy to use even for the most non-technical users.

I agree with that 100%. And I'm not saying my suggestion is worth the cost here. And I definitely worry about discoverability and keeping things easy to understand. But I do think it would be useful for users of e.g. Japanese. And I'd like to avoid unintentionally disadvantaging users of non-western languages for whom this might not be a relatively unintuitive and useless feature.

Right now, I'm glad I don't live in Japan as I would find the effectively random order of the cards rather annoying. That said, I have no idea whether my proposed solution works well for many other non-western languages I'm not familiar with, which we should try to find out if we do consider implementing anything like this.

would be so rarely used and so hard to explain

Do we know that for certain? We may simply be lacking feedback from users of non-western languages who might have used it if it existed. I don't know. And maybe they have workarounds that I'm not currently aware of that make this a non-issue for them. Or maybe they're just used to western software not having such options and either gave up or avoid those.

But I'd like to not make assumptions here, especially since we ourselves would not miss the feature as we can simply use the lexicographic sorting by name without issues in our languages. We don't gain anything. But others might. Having a separate field for the phonetic reading of a name is very common in Japan. I haven't used Japanese cards myself, so I hadn't thought of this before, but realising the usefulness there is why I'm suggesting this in the first place.

I'd much rather have a full manual sorting implementation than an extra field on the edit screen.

Fair enough. But that would be a worse solution for anyone wanting to sort by e.g. Japanese dictionary order as they'd have to do it manually instead of being able to simply fill in the field correctly for each card. For them the discoverability of that might actually be worse as well, as they'd be more used to such extra fields.

Sorry for "hijacking" this issue with my suggestion (which was intended as a possible alternative, hence relevant). If you really don't want to implement it, I'll leave it at that. If it's something we can discuss further, maybe we should open a new issue?

@mariush444
Copy link
Author

As a workarround I use 01, 02 ... and so on in the name but I don't know how catima works with RtL languages.

@obfusk
Copy link
Contributor

obfusk commented Jan 3, 2024

@mariush444 do you have any kind of system for your manual ordering? I would assume the order you want is still based somehow on some kind of "property" of the cards that make you want to order them in a specific way? Is this "property" something that could maybe be put in a custom field (of course not as 01, 02, etc.) that could be used for automatic ordering or do you really need to do it manually for some reason?

@mariush444
Copy link
Author

mariush444 commented Jan 3, 2024

Unfortunatly, it is not a system.
Many of the cards are discounting ones.
e.g. some cards have better offers before XMAS, some after. It is to dynamic process to find system or method.
Just simplest example.

@obfusk
Copy link
Contributor

obfusk commented Jan 3, 2024

Just brainstorming here, but using favourites is apparently not enough? Would it help if those were shown in the order they were starred (like pinning conversations often works in other apps) instead of alphabetically?

@mariush444
Copy link
Author

Yes, sometimes I used favorities as workarround.
It misses some priorytetization so I use 01, 02 at the begining of the name.

But you know. It was just idea to improve your very good app.
If it is not OK from your point of you then it is not problem.

I can live with it as it is.

@TheLastProject TheLastProject changed the title Sort by Sort manually Jan 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
state: consensus-needed A consensus needs to be reached before this can be implemented
Projects
None yet
Development

No branches or pull requests

3 participants