Both OmniFocus and OmniPlan implement filtering today, and they both offer the option of showing filtered items in context.
Here’s a screenshot of [how filtering works in OmniPlan]:
Quoting [from the OmniPlan manual]:
Choose View ▸ Filter Tasks (Option-Command-F), or click the Filter button in the toolbar. A sheet appears for setting up your filtering criteria. You can add as many criteria as you like by clicking the plus icon on the right side of the entry line, and filter the criteria themselves by option-clicking on the add button to create nested criteria within the filter hierarchy. When your criteria are set up the way you want them, click the Save Filter dropdown menu to save the current filter or restore a previously saved filter. (You can also use the View ▸ Restore Saved Filter menu item.)
When your filter is set, any tasks which match your criteria remain in the outline, while the rest of the project is hidden away. You can work with the project normally while it is filtered, but you can only edit the visible tasks. While your filter is in use the Filter Bar appears, providing options to edit or remove the filter and showing the number of tasks hidden.
If you export or print a project while a filter is on, only the visible tasks are included in the exported file.
Does this describe what you’re hoping to be able to do in OmniOutliner?
(The manual doesn’t mention this, but new rows aren’t immediately hidden from view (new rows typically wouldn’t match the filter yet), they just get temporarily included until the filter is reapplied.)
At a high level that sounds useful, indeed.
I’d want to be able to filter by:
- Specifying which columns to use when checking for filter matches
- Matching text search terms (or flipped, things that don’t match) in specific columns
- Matching checkbox status for a checkbox column
- Matching a date range for a date column
- Matching one or more pop-up list values, which are properly provided in the filtering area (not having to remember exactly what value to enter as free-form text, being able to instead choose from appropriate values)
Additionally, I’d really love to be able to filter by the last time a row was modified. I recognize that if you’re not already tracking that information then the feature would be difficult. However, it would be by far the most useful filtering for me, being able to easily see what I’ve most recently modified so I can focus on those areas of the outline until I feel satisfied with the section (without having to manually figure out what I was working on).
Not asking much, I know. :)
First, I’d like to thank you for asking your customers! I’m absolutely with MathewLive but I’d really appreciate sorting according to pop-up list items.
This is awesome news, @kcase!
At the risk of copy/pasting implementation styles, I would look at what an autofiltered table in Excel does as guidance for UI implementation - column headers are where I naturally gravitate to as a place to quickly filter/sort from a UX perspective, but I love the OmniPlan approach to building more robust/multidimensional filters.
So really, I think there are two use cases here:
- Quick filter to look at things in a certain way in my document now
- Multidimensional/complex/saved filter to look at things in my document a certain way on a regular basis
I think likely, each merits its own though about functionality and UX as discreet pieces of functionality.
Very excited about this!
My primary “filtering” wish is “add tags and then filter for them” functionality. You add one or more user-defined tags to specific rows, and then filter to show the tagged rows. The “display tagged rows” dialog should include the ability to specify one or multiple tags.
The most basic implementation of this would be the way that WorkFlowy does it: When you filter, you see all the tagged rows along with their parent hierarchies.
More useful would be the functionality Circus Ponies NoteBook (and if you go back far enough, GrandView) provided. When you filter for a tag or multiple tags, you see all the tagged rows in a separate view WITHOUT their parent hierarchies. (CP NoteBook provided the ability to expand a tagged row to show its children in this view–that was nice but not critical.) This view is optionally sortable by tag (and maybe by other criteria). When you click on an indicator to the left of a row, you’re immediately taken back to the normal outline view–with that row active. A sample use would be the following: I’m a web developer. Within my detailed notes concerning a client’s site, I’ve identified various issues. I’ve tagged each issue with a high, medium, or low priority. When I’m later figuring out my action plan, I can now view a priority-sorted list of issues. If I have questions about a particular issue, I can click on the indicator to its left that immediately takes me back to the portion of the outline it’s part of–which is where I can see important contextual and related information.
As far as where the tags would be placed, it could be within the topic text (like WorkFlowy), or within designated columns (like CP NoteBook or GrandView). I think either approach would work for my needs.
Thanks for seeking feedback from customers about this!
I completely agree with this.
Workflowy has a very simple, elegant approach to filtering for tags. I’d love to see filtering like this in OmniOutliner.
Filtering OmniOutliner will have limited value if it reduces outlines to tabular rows, and is blind to outline structure.
I do all my filtering at the moment in TaskPaper 3 and FoldingText, both of which filter on outline structure as well as on row fields (tags and their values). (The filters can specify an alternating sequence of key-value matches and outline relationships (ancestors, descendants, siblings before, siblings after etc etc).
OmniOutliner’s filtering should be a least as good (and outline-aware) as TaskPaper 3’s.
Ken, quick note for now (hope to reply later with more thoughts): have you had a chance to see how filtering worked in Natara Bonsai? It had its own limitations (and wishlists on improvemen), but from my experience, it is the bare minimum of what any serious outliner (as a list manager, not as a text drafting tool) should be able to do.
Tabs would be a great complement to filters.
A filter result opens in a new tab and data is synchro with the unfiltered view
In the screenshot of the filter dialog in OmniPlan, there’s a selector for “Tags”. If you were to implement filtering in OmniOutliner, what form would that part take? Does it imply rows/entries in OO would get a new field for tags? Or would there be no tags selector in a filtering system for OO, and instead, it would let users select the columns to including in the filter (and it would be up to users to create a tags column if they wished)?
What I would look for in OmniOutliner filtering is:
the ability to filter based on values in one or more columns
the columns whose values are filterable would include text, numerical, date, drop-down, etc.
if an item that satisfies the filter is not a top-level item, the filtered outline would show the selected item’s parent items in place, but grayed-out. This would preserve the context of the filtered item, without making it look like the parent items satisfied the filter also.
having tabbed views would be extremely important. In other words, the ability to keep different views of the same outline visible at all times, switching between them just by clicking on the appropriate tab.
this would also suggest that each tabbed view of the same outline could maintain its own column structure - one view might require column A, another column B, another both A&B (etc.)
if OO filtering is similar to the OmniPlan “Saved Filters” box you included in your post, it would be important to include Save Search as an option.
Highest possible encouragement to implement this as soon as possible. It’s the one feature OO has long needed, and that would catapult it into the most useable, customizable, flexible, and desirable app for information management.
Thank you for asking.
I would urge you to take a serious look at ECCO by NetManage, which I’ve been using intensively, all day, everyday since 1997. The company went out of business and stopped upgrading in approximately 1999, but due to loyal following the outliner was released as an open source program. I’ve been searching for a modern day version with a desktop/phone/tablet sync and Omni Outliner is the only product on target to get it completely right. Natara Bonsai (defunct) and MLO serve their purpose but only ECCO got outline/user-defeined column filtering right. MLO’s syncing is superb and its filtering is extensvie, but it lacks the user-defined columns that Omni Outline Offers. Especially helpful to fltering are user defined pop-up columns. I would also recommend a “flatten” view (MLO and List Pro) which allows you to switch back and forth between the hierarchy filtered view and a filterd view without parents.
As a lifelong windows user, learning of OMNI Outliner’s similarity to ECCO is what drove me to start using an ipad mini. Today I upgraded to a 9.7 pro and began seriously considering buying my first apple laptop. I was under the ipression that OO on the Mac offered filtering of user-defined columns and that it had not yet come to the ipad and iphone. It would have been worth my while to buy a laptop just to get the filtering of certain projects I am working on. I decided to run a search, first before completely changing my lifestyle, came across these posts, and decided to join the forum and post this reply.
I hope these comments help. Full filtering of user-defined columns, especially syncing to the ipad, would dramatically improve my work experience. I’d be willing to participate in BETA testing if it would be helpful.
As a former user of Ecco (even, via VMs after I switched to Mac until the lack of integration became an insurmountable obstacle), I heartily endorse this. Ecco was an outstanding solution to the problems of managing information in an outline, including seriously functional syncing across (Windows) devices and its filtering was one of its great strengths
Another vote for workflowy-type filtering.
filter based on :
- row level.
- status (check box)
BTW, as long as we’re talking about filtering and WorkFlowy, I love that WF understands #tags and compiles a list of them as you go. When you click on a #hashtag link, it auto filters to that tag, and it can be cumulative.
This is the kind of awesomeness I’d normally expect from Omni. I hope OO adopts some of these design gems.
Totally agree about Ecco. Their implementation of filters was as simple as it was powerful. Omni might not be getting a ton of requests for filters, simply because until you’ve used them in a context like this you have no idea how incredibly important they can be. That’s why pretty much everyone I’ve ever met who used Ecco was so devoted to it. Even now, almost 20 years after it was discontinued.
If OO added a filter capability similar to Ecco’s it would become, hands-down, the most powerful tool available for information management. Right now, it’s just a very good outliner. I don’t mean to diminish the importance of a good outliner, but filters would turn this outliner into a highly customizable database, and the benefits would be exponential.
And if anyone doesn’t want to use filtering, they don’t have to, and the very good outliner remains exactly as it is.
Thanks for much for including users in the thinking about what search/filtering might be. I meant to reply sooner, but have been busy trying (with some success) to use OO as a Circus Ponies replacement. The attached suggestion for search/filter would really help with that.
Great suggestions! One of them, Other suggestions a, is already working for me, if I understand your description correctly. That might have changed, though, in newer versions of Omnioutliner than 4.1.4, which I use because of Mavericks.