In doing a comparison of ClickUp and Fibery search functions today (Fibery won in a landslide, it’s shocking how bad ClickUp search is!), I again came upon the desire for the more general interpretation of this feature request. I even forgot that there had been further discussion in this topic about the possibility of extending the specific “filter based on workflow status” to the more general “filter based on contents/status of arbitrary fields”, and I came to the forum to make exactly that request. I typed it all up and everything, and then, after linking to this and other topics… I decided I should read the contents of this just to be sure I wasn’t making a duplicate. And more or less I was.
But, so that time is not wasted, I am coming here primarily to ask @mdubakov whether it seems better to edit the topic title and/or update the first post here so that it better describes the broader feature request, or if perhaps I should make the following into a new feature request. An interesting thought occurs to me here, which is that Fibery’s own nice integration with Discourse probably makes it less problematic that later replies in this thread have changed the possible scope of the request, in that you can just highlight the important bits and reference them to the internally-tracked feature/dev task(s). However at least for participants here who are voting on the request, I think the title and first post are still quite important and worth getting right.
So for now what I’m going to do is summarize what I think is the best version of this idea/request, along with linking to all the search-related topics that I think relate in some way, with some notes on how they are similar or differ. This can be added to the first post if it makes sense to do so, or split-off into its own thread (as the length of it seems to suggest, now that I’m done writing and mocking it all up ).
Request Summary - Search Filtering Based on Field Values
I would like an additional filter function or filter “pane” to be added to the “Quick Search” popup to filter the search results based on the values/contents of particular fields. Essentially the user should be able to filter the text-based search results not just by which Database it appears in, but also by values of certain fields in that database. For example being able to quickly search for entities in the Bugs database that are Assigned to a particular person, or where the Creation Date is older than a specified date.
View Filters are Not Enough
Obviously this is possible in View Filters already, but having to create an entirely new View+Filter (or a temporary filter, or even use My Filters) is cumbersome, especially as the number of databases increases. “View proliferation” is a real problem, and becomes especially so when view filtering is the only way you are able to effectively find things quickly based on multiple criteria. To my knowledge there are no really clear solutions from the team for this “view proliferation” (besides perhaps using the new Blocks functions to embed a bunch of different views on a single page, but that’s not really a good solution IMO). I don’t see a major reason why the Search dialog could not be elegantly extended to allow this dynamically (especially given that filtering functionality is already in the back-end, it seems).
Implementation and UI Suggestions
This of course does not work with all field types (primarily Rich Text probably doesn’t apply), and it should not include all fields for filtering by default (across all databases) because that would be unwieldy. We also would need room in the search dialog for these extra options, without making the dialog too large or cluttered. There are several ways this could be handled, for example a “Filter” button at the top of the Search dialog that pops out another search pane to the right (next to database filtering), or even a dialog just like the Filters on Views (pop-up with existing filter creation UI). Given the existence of the Filter UI and functionality, if it could be added easily to the Search dialog unobtrusively then it might be a very nice, low-impact solution.
However a different approach with a more significant overhaul of the UI is what came first to my mind, so I’ll outline that for what it’s worth. Note that re-using the Filter dialog as mentioned above may in fact be the superior solution, I’m not sure. I just had this in mind so I wanted to put it out for everyone to consider.
First, I think the existing database filter arguably takes up too much room (vertically), especially when you have lots of databases. A Discourse-like dropdown list (with search) could address this same UI need in a much more compact way:
This is the dropdown that appears when you click on the text “All Categories” on the Fibery forum home page. Hopefully it is clear that, by default, what you are viewing in the forum is contents from “All Categories”. In the Categories dropdown you have a Search, and you have a (scrollable, if necessary) list of Categories. This is the exact same functionality as the current Database filter in Fibery, but it takes up a fraction of the space, and expands only as necessary.
This leads to my second suggestion, which is that certain “important” fields (or perhaps I should say “globally relevant” fields?), primarily what used to be called “Extension” fields (Status and Assignee in particular) be available for filtering across all databases. This might also include Creation and Modification dates since they are universal to all Entities. But filtering on more database-specific fields might perhaps only be available when a specific Database is selected. So what would appear below this compact dropdown Database list by default might be:
State
Assignee
Creation Date
Modification Date
And perhaps Files (a “has files?” checkbox), and maybe even Documents and Whiteboard (i.e. “has documents?”, etc.). But those 4 above at the least seem worth including by default for filtering across all Databases.
Then if you pick a Database, an additional set of Fields show up below that for filtering. Now this could be just all fields in that Database (those that make sense anyway), scrollable and searchale like the Database list currently is. Or it might be better to let Admins “promote” individual fields to be “Visible in search filter”, e.g. a simple toggle like “Let non-creators add new options” in multi-selects. Either way it might look something like this:
Now that looks like a powerful search function! (of course there should probably be separators on the right side, maybe with titles to make clear what are “global” filter fields, what are DB-specific, etc.) And note that, at least as far as I can see, you haven’t lost anything from the current design, in fact if you want to you could even show the Database filter selection (dropdown) open/expanded by default, to hint that that’s the place to start for filtering. Although you’d want some way to also show that there are other filterable fields. Maybe limit the height of the expanded (but vertically scrollable) Database list…
Bonus points if you can figure out a way to use some sensible interpretation of the Filter(s) to Create new entities with those values. (i.e. obviously the creation/modification date wouldn’t be inherited, but perhaps any inheritable field value would be)
Double bonus points if Database selection for filtering can allow multiple DBs.
I feel like the idea of this connects more generally with a couple of newer UI/UX conventions that I think have been a real revelation for many, some of which Fibery has adopted, others which it hasn’t. In this case it’s turning Search into something of a “Super search”, with extra “powers”. Other examples of things that make it so much quicker to get real work done are / (slash) menus and “command palettes”. I’d love to see Fibery add the latter one day, but that’s a separate feature request.
Killing Multiple Birds with One Big Stone
This feature would, I think, help address if not entirely obviate the need for:
as well as the related:
At least in the context of the main search. For auto-complete (e.g. entity link/reference picker) you’d still want some of those improvements.
Obviously this change would be more work than those two, but the net benefits would be far greater I think, and worthwhile.
Other (Somewhat) Related topics
I don’t think either of these existing requests are quite the same, but my request might help address some of these needs too
Search contents of field (different than filter by field contents/status):
Search within collection (this seems probably more difficult to replicate with what I’m proposing above):