Willy-JL / F95Checker

GNU General Public License v3.0
101 stars 16 forks source link

Implement custom tags/labels #19

Closed sonikun closed 1 year ago

sonikun commented 1 year ago

Can you slope it in a little managing side? Like have some big titles with : currently playing, paused, dropped, etc.. It will be edited by users, which game they are playing or they have paused , planning to play etc.. It will sort out the big list and will look nice in my opinion.. I appreciate your efforts Thankyou

Willy-JL commented 1 year ago

So far most of the features in F95Checker are objective so making something like this i feel like would restrict the user. What I'll do is merge this with a similar request: custom tags. You'll be able to create your own tags and give each game how many of your custom tags that you want, and of course filter the list by those custom tags.

Willy-JL commented 1 year ago

Need some feedback (open to anyone).

I’m thinking about the custom tags feature and how it could be implemented. I was thinking about a small popup window where you can manage the tags, each tag has name and color. Each game can have as many custom tags as you want, you can filter by those tags and also in list and grid view there will be a small colored dot near the name or something like that for each tag. Somewhat similar to the tags for files on macOS is you will, but each game can have more than one tag. Of course the full info popup will have a new tab for the custom tags where they are displayed with their names too and you can manage them from there too. Also you can manage them from the right click menu.

sonikun commented 1 year ago

Yes that will be good according to me This is good for my case(I think for everyone too lol)

just-Addict commented 1 year ago

in list and grid view there will be a small colored dot near the name or something like that for each tag.

Instead of a colored dot for each tag, I would prefer just a singe icon, just like now one shows if Notes are present. I think that would look better than having a series of colored dots (one for each custom tag) taking up space from the already shown info. Clicking that icon could then open the popup with the Custom Tags tab selected?

baloneysammich commented 1 year ago

This may not be where you want to go with this, but I'd like it if there were a way to use tags for categorization of the full list in addition to filtering.

For example, I have the Notes field active in list view and use letters to indicate certain tags. The first letter is the "category" so I can sort by Notes and get a category-ordered listing. A = games with my two fav tags, B = games with fav tag, C = games with 2nd fav tag, D = games with neither tag, then a few misc others like J for Japanese games and G for games with actual game-play (anything other than VNs and RPGM or similar).

In addition to these category codes, I additionally use lower-case letters to indicate liked other particularly liked tags, and finally upper-case letters to indicate tags I'm not so fond of. So for example one game annotated 'A psM'. Your color coding idea would substitute for this secondary function, but it would be awesome if it were somehow possible to associate certain tags with an emoji or other small image.

Also, for my categorization idea it would be very handy if you could define "meta tags" that automatically get applied to games with one or more F95 tags.

Willy-JL commented 1 year ago

in list and grid view there will be a small colored dot near the name or something like that for each tag.

Instead of a colored dot for each tag, I would prefer just a singe icon, just like now one shows if Notes are present. I think that would look better than having a series of colored dots (one for each custom tag) taking up space from the already shown info. Clicking that icon could then open the popup with the Custom Tags tab selected?

overly complicated i think

This may not be where you want to go with this, but I'd like it if there were a way to use tags for categorization of the full list in addition to filtering.

hm yeah that could be useful, and this way the labels (i think thats what im gonna call them, because tags would get confused with the f95 tags) will be in a separate column in order to be sortable, so then you could also hide them altogether.

Your color coding idea would substitute for this secondary function, but it would be awesome if it were somehow possible to associate certain tags with an emoji or other small image.

custom images for the labels would be really overcomplicated, but emojis could be interesting. will also be a challenge since with imgui were not using system toolkits for drawing text normally, and this is not using electron and browser rendering, its a very low level renderer so theres the problem of finding the system emoji font and importing it. same issue with the fonts for other languages like chinese and japanese, currently the characters are just replaced with ????, will also try to fix that

Also, for my categorization idea it would be very handy if you could define "meta tags" that automatically get applied to games with one or more F95 tags.

too much imo

just-Addict commented 1 year ago

Instead of a colored dot for each tag, I would prefer just a singe icon, just like now one shows if Notes are present. I think that would look better than having a series of colored dots (one for each custom tag) taking up space from the already shown info. Clicking that icon could then open the popup with the Custom Tags tab selected?

overly complicated i think

My suggestion was made based on the assumption that multiple 'tags' or labels could be assigned to a single game. Your comment about possibly putting them in a column so it can be filtered/sorted on, makes me think you meant a game can only have one tag/label? If that's the case then ignore what I suggested

Willy-JL commented 1 year ago

Instead of a colored dot for each tag, I would prefer just a singe icon, just like now one shows if Notes are present. I think that would look better than having a series of colored dots (one for each custom tag) taking up space from the already shown info. Clicking that icon could then open the popup with the Custom Tags tab selected?

overly complicated i think

My suggestion was made based on the assumption that multiple 'tags' or labels could be assigned to a single game. Your comment about possibly putting them in a column so it can be filtered/sorted on, makes me think you meant a game can only have one tag/label? If that's the case then ignore what I suggested

Not really, no, the column will show all the tags, but the tags will be in order of which ones you added first, so it’ll sort based on the first one. Or so I think at least, we’ll see when I get to it

Willy-JL commented 1 year ago

The requested feature in #42 for a kanban style board view brings an interesting problem to the table with this one. My original idea was to have the user be able to make multiple custom tags, and assign however many they want to each game. For a kanban view this can become confusing because there could be the same game in multiple columns, since the game can have multiple, or even none at all, custom tags. This would be solved by restricting each game to one custom tag, and add a kanban column for those games that dont have a tag, but this is a very big restriction that I don't really want to have, since the user might have some tags for status like "dropped", "interesting", "played", and some for the type of game like "drawn", "realistic", "text based" and so on, with each game fitting in multiple of those at the same time. So I'm thinking there are 2 options:

  1. Keep it simple, each game can have multiple tags, and the same game might appear in multiple kanban view columns
  2. Make custom tags work in a "type / group" basis, as in the user can create custom tag groups, and each game can have 1 single tag from each tag group, so the kanban view would have columns based on the tags from 1 single group. For example the user could make a "status" tag group, which contains the "dropped", "interested", "played" tags, and each game can only have 1 tag from this group. Then the user could choose which tag group to base the kanban view columns on.

Implementation wise I am heavily leaning towards the 1st option, since the 2nd one could get very messy very quickly. Also could get complicated with how to properly display the custom tags in the normal views, and also feels overly complicated from a user experience standpoint. But i might consider it if there is enough demand.

sonikun commented 1 year ago

For me TBH 2nd option feels more friendly than the 1st because the implementation of custom tag group will enable user to organise the database better.

If it gets implemented then I will use following groups: 1) Status: playing, paused, dropped, planning etc 2) Reason for 👆: good graphics, poor sandbox, grindy etc 3) Quality: grainy, toonish, realism etc

Along with this, you can add a option in the side panel, same as filters but to filter the custom tag group Like I want to see all games with "Status" custom tags then all games with tags from status group will get displayed..

The same game in multiple views won't serve as overview purpose as they will repeat and It will look annoying according to me

sonikun commented 1 year ago

Or we can have option 1 and games gets duplicated but adding custom tab group + its filter will solve most of the duplication right?

FaceCrap commented 1 year ago

@Willy-JL

For example the user could make a "status" tag group, which contains the "dropped", "interested", "played" tags, and each game can only have 1 tag from this group.

I think I don't understand quite what you mean here, the way I read it would mean I can only assign one of the three tags but not e.g. assign both "dropped" and "played" I am aware this is not really a good example, because personally "dropped" for me would mean I no longer want to play or keep track of that game and consequently have it removed from F95Checker, but I can see situations where someone might want to assign more than one from each tag group... otherwise it would be almost as restrictive as only allowing 1 tag per game... On the other hand, wouldn't that still allow games to show up in multiple groups? Because with multiple tag groups, and being able to select just one tag from each group, it could still end up in multiple "kanban" columns... or would you then also restrict it to only allowing one group to be chosen?

At any rate... unless you're an UI wizard, I fear this could potentially lead to a very complicated interface... folks can go wild with multiple tag groups/kanban columns. Which might make it necessary to only allowing one kanban group be shown at a time and a way to switch between them...

Willy-JL commented 1 year ago

At any rate... unless you're an UI wizard, I fear this could potentially lead to a very complicated interface... folks can go wild with multiple tag groups/kanban columns. Which might make it necessary to only allowing one kanban group be shown at a time and a way to switch between them...

thats what i was thinking wheni first thought of the tag group option. this way you make your own ways of classifying games, and kanban view shows each game in 1 single column, because the column shown in kanban view depend on 1 single tag group, and you can change by which tag group the kanban view is categorized...

but it would end up quite confusing.

what i think i will do is have simple tags / labels, no groups or anything weird, each game can have none, 1 or multiple labels and kanban view will have some duplicates. what i might do is allow the user to toggle which labels are shown as columns in kanban view. only thing is that this way you wont be able to drag games around in kanban view, youll have to use the right click menu or whatever else to change the labels for the game.

Willy-JL commented 1 year ago

Build 789 has a basic implementation of custom labels. For now I added them to the database and to the games, so you have a section in the settings sidebar to manage them, and you can assign each game its labels by right clicking it and going into the labels submenu. Once added, you can see them in the labels tab of the info popup, I am yet to decide how to display them in list and grid modes.

For now they only have name and color, emojis might still be possible but im not sure. I am already using MaterialDesignIcons so i could allow copy pasting icons and call it a day. Maybe i could make it so in list and grid it shows the first letter of the label name, so if you put an icon for the first character it looks somewhat cool as a small colored icon?

So to mark this as completed i'm missing:

do tell me it i missed anything or if you have suggestions / objections (but keep in mind i cant make everyone happy)

Willy-JL commented 1 year ago

i think i found a decent solution

you can easily add icons, labels are shown next to the name, but with a smaller font and only show the first character of each word. so really you could use no spaces in the name and put an icon as the first character and have the short labels only show the icon. also hovering the short labels shows the full label name in a tooltip. no sorting but you can filter. can add labels from right click menu or from the info popup. also this new icon selector is available on most textboxes (where it makes sense) so yo ucan use them in game notes and so on

try them in build 803

Willy-JL commented 1 year ago

Released in version 9.6