Search with Twproject

screen1129

Twproject uses a full-text search engine indexing every text inserted in.
In order to find  something just insert the word or the phrase you want to search and press “return”.

screen1130
results will be ordered by score and the text highlighted. Twproject uses stemming, so if you searches “hotels” you will find “hotel” too.

This is a wide search on “everything”, so you may find task, resources or appointments. If you want to search for a particular object, you can use the combo to select the scope of your search; t: task, r:resources, i:issues and so on.

Twproject gives you a refined filtering system, that uses database searches (sql) instead on full-text ones.

Common filters

screen1213Every list, task, resources, issues etc. has a set of commonly used filters. These filters are accessible from the right menu.
For instances on projects page you will have “My open projects”, “Next Milestones”, etc.
On issues pages you will have “My open issues”, “Issues open recently” etc.
If you click on a filter, the filter will be applied and you can see how the filter has been composed; it is a good starting to understand how filters work.

Once a filter is applied, print, report and export, will be applied to the filtered elements only.

 

Search using filters

In order to find task, issues or resources with refined searches,  just click on the  corresponding link in the top bar; the filtering system works in the same way for every section. For instance “Resources”.

search-people

By default you will see the “default filter”, in this case “your colleagues”, but there are already several useful preset filters “Twproject’ users”, “companies” and “people”.

Not enough? Press “more filters” to get more options:

search-people-refined

This filter lets you compose refined search conditions – click search to get it going .

Each field is used in logical AND with the others, so for instance if you set the “company” and check the radio “people” you will find only people (not departments) from that company, that in this case means exactly “my colleagues”. In fact every preset filter simply fills the respective fields in the form so you can use them as a guide for composing your own.

Results are usually paged, and you can flip pages by using the paging bar:

paging-bar

Page size can be changed, just click in the field and type a number.

page-size

Custom filters are powerful also because Twproject supports Query By Example (QBE) and allows you to store your filters in order to quick repeat complex searches.

Most Twproject’s list pages, allow printing and exporting to Excel: print, export, report will apply to the current set of objects.

Save your filters

In every Twproject search page you can save your filter:

screen935

screen936

And the filter will always be available on the my filters side box.

custom filter

You can decide to use a filter as your default one. In this case prefix the name with “d:”.

Search tricks: QBE

The query by example (QBE) search method gives the user an easy way to compose complex queries, by using a particular syntax in the search fields. If for example in a field you write “$mixer*” and click search, you will get all results that start with “mixer”, but not those that have “mixer” as a middle occurrence.

Twproject by default is case insensitive in searches, even on case sensitive databases; this can be changed by the administrators.

If values are specified in more than one field, all these must be satisfied (fields are in “AND”). Fields where QBE is enabled are usually easily identifiable: clip_image003

Queries can be composed with the following parameters:

Condition Operator Example
comparison =,>,<,>=,<= All tasks whose progress is above 5%:   progress: % More complex: above 3, lesser than 6 or equal to 10: unitary price:
not equal ! All tasks whose description does not contain “jewel”:    name/description
exactly equal “” All tasks whose description is “nice jewel”, excluding those that have only “nice” or only “jewel”:name/description
empty field (), [] All tasks whose description and name are “null”:    name/description
zero length field // All tasks whose description and name have empty content:    name/description
not empty field !(), ![] All tasks whose description and name are not empty:    name/description
contains * All tasks whose description or name end with “spies”:    name/description All tasks whose description or name start with “Contact”:    name/description All tasks whose description or name contain “an”:   name/description
isolated word # All tasks whose description or name contain “jewel” as isolated word:    name/description Will find “Another jewel robbery” but not “Jewellery stolen”
is between : All tasks whose start is between the dates below:    start
conjunction + All tasks whose description or name contain “another” AND contain “jewel”:name/description
disjunction | , All tasks whose description or name contain “another” OR contain “jewel”:name/description or name/description
Parametric date settings YESTERDAY
TODAY
TOMORROW
LQ LM LW Y T NW NM NQ
(-)n[DWMY]
These constants get substituted in searches with their current values:
Finds all events started after yesterday.    start
Finds all events ending between one week ago and three months.    end

Dates are always completed with time, so when you are filtering for a date, QBE applies some conversions: in case of a single date e.g. “1/1/2009” the engine will search for dates >= 1/1/2009 00:00:00:000 and <= 1/1/2009 23:59:59:999. The same in case of an interval e.g.: 1/1/2009:2/1/2009. The engine will search for dates >= 1/1/2009 00:00:00:000 and <= 2/1/2009 23:59:59:999.

Date shortcuts

Date fields allow users to quickly insert dates in the correct format. You can move between months by using the arrow buttons, but more interestingly, you can use some shortcuts instead of inserting a complete date.
screen928

For instance you can insert “today” (or even “t”) instead of inserting the actual date. What is really interesting is the use of such shortcuts in custom filters. In fact using QBE in dates allows you to express something like “all those whose end date <t” intending that end date is in the past. There are several shortcuts:

Shortcut “Longcut” Description
N NOW Is this instant including milliseconds
T TODAY Is the first millisecond of today (00:00:00:001)
Y YESTERDAY Is the first millisecond of yesterday
TM TOMORROW Is the first millisecond of tomorrow
W WEEK,THISWEEK,WEEKSTART,THISWEEKSTART Is the first millisecond of the first day of this week
LW LASTWEEK,LASTWEEKSTART Is the first millisecond of the first day of last week
NW NEXTWEEKNEXTWEEKSTART Is the first millisecond of the first day of next week
M MONTH,THISMONTH,MONTHSTART,THISMONTHSTART Is the first millisecond of the first day of this month
LM LASTMONTH,LASTMONTHSTART Is the first millisecond of the first day of last month
NM NEXTMONTH,NEXTMONTHSTART Is the first millisecond of the first day of next month
Q QUARTERTHISQUARTERQUARTERSTART,THISQUARTERSTART Is the first millisecond of the first day of this quarter
LQ LASTQUARTER,LASTQUARTERSTART Is the first millisecond of the first day of last quarter
NQ NEXTQUARTER,NEXTQUARTERSTART Is the first millisecond of the first day of next quarter
CWn WEEKOFYEAR, WY It is the calendar week number start day, e.g. CW2 is the first day of week (and this depends whether American or European format, Sunday of Monday) of the second week of the current year

Note that every shortcut is always reduced to a date, not to a period even if the name suggests a period (for instance “week”) when used in form data entry; it becomes a period when used in search pages

screen929

You can do even more: you can also use in dates fields every expression matching

“^-?[0-9]+[DWMY]$”.

This is a regular expression syntax, and to explain it a bit more clearly, some examples may help:

Example Meaning
2D in 2 days
-3D 3 days ago
12W in 12 weeks
-5W 5 weeks ago
2M In 2 months
-35Y 35 years ago

This can even be used to insert time intervals when recording work, such as in assignment list, for setting days:

screen931

Becomes:

screen932

Or even in work log recording:

screen934

Compute in fields

You can use arithmetic expressions in numeric fields: the result of the computation will be saved like any other numeric value:

compute in field1    alt