The Omni Group
These forums are now read-only. Please visit our new forums to participate in discussion. A new account will be required to post in the new forums. For more info on the switch, see this post. Thank you!

Go Back   The Omni Group Forums > OmniOutliner > OmniOutliner 3 for Mac
FAQ Members List Calendar Today's Posts

 
OO Pro 4.0? Thread Tools Search this Thread Display Modes
I bought OmniFocus, but haven't yet learned how to use it. I may never use it if I could filter on OO based on the content of any column. That alone would be huge in order to use OO as a task manager: filter by date, filter by context, etc.
 
Quote:
Originally Posted by henri View Post
I may never use it if I could filter on OO based on the content of any column. That alone would be huge in order to use OO as a task manager: filter by date, filter by context, etc.
I can't make any promises about future versions, but other people have made similar requests, and we definitely have some ideas on filtering-related things we would like to do. (However, a new, major update to OmniOutliner is not imminent.)

-andrew
 
Quote:
Originally Posted by Andrew View Post
I can't make any promises about future versions, but other people have made similar requests, and we definitely have some ideas on filtering-related things we would like to do.
Just being able to "find" stuff from any column would fantastic.

Quote:
(However, a new, major update to OmniOutliner is not imminent.)
:(
 
Quote:
Originally Posted by henri View Post
Just being able to "find" stuff from any column would fantastic.

:(
You could script a find on a column. I have used this. It works on the topic column. Actually creates a popup list of the column and goes to it. Another column would be a little more work but you could get there....

tell front document of application "OmniOutliner Professional"
set theProjectList to {}
set enumcount to count of enumerations of column "Project"
set x to 1
repeat until x = enumcount
--- set item x of theProjectList to name of enumeration x of column "Project"
copy name of enumeration x of column "Project" to end of theProjectList
set x to x + 1
end repeat
set thePopChoice to choose from list theProjectList with title "Project"
if (thePopChoice is false) then return
set thePopChoice to (item 1 of thePopChoice)
set theRow to first row whose topic contains thePopChoice
hoist theRow
select theRow
end tell

You can also script filtering similar to how KGTD does it. By creating the filters as subtopics in the utility drawers.
 
Quote:
Originally Posted by gcrump View Post
You could script a find on a column. I have used this. It works on the topic column. Actually creates a popup list of the column and goes to it. Another column would be a little more work but you could get there....
I've done some AppleScripting, but this is over my head.

Finding things in the topic column does not require a script: you can do it by typing in the search box in the utility drawer. I'd love to have a way to do the same for other columns! e.g. a date column.
 
Quote:
Originally Posted by henri View Post
I'd love to have a way to do the same for other columns! e.g. a date column.
This might be better done with a fake filter. I would assume this is something like a due date? So you would have a bunch of them. Finding on a column (in my opinion) typically works better if there is a finite number of matches. If there can be a bunch then the fake filters work better.

I use the term fake filter to describe what is possible today, and apparently for a while based on this thread, in OO. Basically what you can do is find all the rows that have a column that match a certain criteria based on the value of a column of interest and duplicate them as children of a Heading for your filter. So assuming you wanted your find to be based on items due today, you would create a top level row called "Today" and then duplicate all the rows in your document with a due date column set to today as children of that Top level row.

Let me know if that is what your after and I think I can help... (think being a key word)
 
Quote:
Originally Posted by gcrump View Post
what you can do is find all the rows that have a column that match a certain criteria based on the value of a column of interest and duplicate them as children of a Heading for your filter. So assuming you wanted your find to be based on items due today, you would create a top level row called "Today" and then duplicate all the rows in your document with a due date column set to today as children of that Top level row.

Let me know if that is what your after
Yes, that's exactly what I need! (I would prefer to just type in a search box in the utility drawer, but since that's not an option...)

Any help you can offer is more than welcome.
 
Quote:
Originally Posted by henri View Post
Yes, that's exactly what I need! (I would prefer to just type in a search box in the utility drawer, but since that's not an option...)

Any help you can offer is more than welcome.
Glad to help. I certainly have received a lot from this board. I have a script that is pretty close to what you want already. Let me work on it during the day tomorrow and see what I can do... Worst case it will be the week end.

Last edited by gcrump; 2007-12-31 at 02:21 AM..
 
Here is what I have so far... This assume you have a section of your document labled overdue...

tell application "OmniOutliner Professional"
tell front document
set TodaysDate to current date
repeat with theRow in every row
set ThisSection to (first row whose topic starts with "Overdue")
set theTopic to value of cell "Topic" of theRow
set theDuedate to value of cell "Due Date" of theRow
if TodaysDate < (current date) then
set theNewRow to make new row at end of rows of (first child whose topic begins with "Overdue") with properties {topic:theTopic}
set value of cell "Due Date" of theNewRow to theDuedate

end if

end repeat
end tell

Last edited by gcrump; 2008-01-01 at 03:15 PM..
 
Thank you, gcrump! This is fantastic.

Here it is, edited to do what I want:

tell application "OmniOutliner Professional"
tell front document
set TodaysDate to current date
repeat with theRow in every row
if (count children of theRow) = 0 then
set ThisSection to (first row whose topic starts with "Today!")
set theTopic to value of cell "Topic" of theRow
set theDate to value of cell "Date" of theRow
if TodaysDate ≥ theDate then
set theNewRow to make new row at end of rows of (first child whose topic begins with "Today!") with properties {topic:theTopic}
set value of cell "Date" of theNewRow to theDate
set value of cell "Priority" of theNewRow to 1
end if
end if
end repeat
end tell
end tell

This copies rows whose "date" is today, pastes them as children of "Today!", sets the date of the pasted copy as today and its "priority" as 1. It only picks up rows with no children. The reason is that I don't want it to get rows that have today's date because of inheriting it from a child. (For example, if the parent is "shopping" and the child is "buy milk", only "buy milk" is picked up.)

Thanks again, gcrump -- I would not have known how to get started, but what you sent me allowed me to get to what I needed with a little trial and error. Whew!

Last edited by henri; 2008-01-05 at 01:10 PM.. Reason: improved the script
 
 





All times are GMT -8. The time now is 01:11 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.