deckerst / aves

Aves is a gallery and metadata explorer app, built for Android with Flutter.
BSD 3-Clause "New" or "Revised" License
2.63k stars 99 forks source link

Disambiguating hierarchical tags with the same leaf value #641

Closed Terrance closed 1 year ago

Terrance commented 1 year ago

Is your feature request related to a problem? Please describe.

The tag UI in Aves uses the base name of tags, which for the most part is fine, but makes some edge cases tricky.

As part of organising my photo collection, I tag faces with their names (which adds /People/<person> tags), but also tag the photographer's name (/Photographer/<person>). Whilst my phone typically only holds photos I've taken, it makes searching for photos of myself tricky -- filtering to my name tag shows me ~all pictures as it captures everything with my photographer tag too.

Another example: I have a set of textual location tags (/Places/<city>), but also some assorted tags for events with sub-tags for locations of more regular ones (e.g. /Events/<event>/<city>), and these have similar naming conflicts.

Describe the solution you'd like

For "duplicate" tags (where the base name is present under multiple paths), have these shown and usable independently. To keep the interface tidy, it would perhaps make sense to hide the full path unless it's needed to disambiguate.

Describe alternatives you've considered

I could rename my tags to keep them unqiue, but the hierarchy format seems fairly standard and I'd like to keep my tags tidy. 🙂

deckerst commented 1 year ago

I understand the benefits of hierarchical tags, but I've decided to keep things simple with flat tags, because it's actually the most common form (whether they are standard XMP keywords or hashtags in proprietary DBs). In your case, I would solve this the same way I handle labels in this repo on GitHub: type:feature, type:bug, etc.