Attention! Macro language syntax changed since MultiMaps v6.1!

Previously, the colon was used to separate both operators and parameters. With this syntax, the macro language cannot be further developed. Now operators are separated from each other by line feed or ">>" characters, and parameters - by colon.

Previously: week:0:complete:100:resource:Coleman

Now: week:0 >> complete:100 >> resource:Coleman

In addition, the syntax of some operators has also been changed. For example, previously: requirestartdate, now: require:startdate. Operators with modified syntax are marked in red in the table below. In theory, almost all of them will continue to work, but after a while they will stop.

If your maps use keywords with macro language operators, be sure to check them against new version!

Also quite a few new operators added.

Data collection Engine has its own programming language (Data Collection Macro Language) to describe what to collect from source maps and what to copy to collection maps. The program resides either in Keywords notes in Configuration Map or in topics notes in the Data collection keywords branch.

By default, Data Collection Configuration map is located in:

My Documents\Palmaross\MultiMaps\Resources\Data collection\dashboards_config.mmap

The structure of Data Collection Configuration Map is discussed here.

Data Collection Macro Language consists of the operators and their parameters.

You may use any number of operators, defining a cascade of filters. Topic will be collected if ALL of operators match the given source topic.

With this macro language, you can customize the collection criteria extremely flexibly.

Operators are separated from each other by line feed (each operator on a new line), or by ">>" characters. Parameters are separated by colons.

When preparing the Template to collect data into it (and when processing Configuration Map), Data Collection engine scans all topics and looks into its notes. When some known operators found, it tries to parse them until end or until the:

; (semicolon)

"comment" word

Below is a typical example of programming the keyword using notes:

day:1
;
collects tasks that are active today

or:

week:0
complete:100
resource:Coleman

comment: collects completed tasks of this week with resource "Coleman".

the previous block also can be written like:

week:0 >> complete:100
resource:Coleman
;
The tasks completed in this week with the resource "Coleman".
(operators are separated by ">>" symbols here)

More examples can be found in data collection cofiguration map.

How the data collection engine works exactly? See here.

To better understand the actions of operators, you need to understand the difference between the standard map topic and the task topic.

A task is a topic that has at least one of the following attributes: progress (0 - 100%), start date, due date, effort, or resources. If none of these attributes are present on the topic it is not a task.

Below is a table that describes Data Collection Macro Language operators.

Operator Description
Date ranges ! All operators in this section are mutually exclusive. If more than one is specified, the last one "wins".
day:N sets a Day. N is an offset from current (0) day. So day:0 = today, day:1 = tomorrow, day:-1 = yesterday and so on.

Result: filters tasks that are active in given day.

Example: keyword Today (day:0)
days:N sets the range of days from current (0). So days:2 = next 3 days (0,1,2), days:6 = nearest 6 days, days:-3 = past 3 days.

Result: filters tasks that are active in given range of days.

Example: keyword Next 3 days (days:2)
week:N the same for weeks
weeks:N  
month:N the same for months
months:N  
today synonim for day:0
tomorrow synonim for day:1
yesterday synonim for day:-1
Tasks Tasks are topics that have at least one of the task attributes: progress, start date, due date, effort, or resources.

task

task:nodates

collects tasks

task:nodates - collects tasks, that have not both dates (start date and due date)
nodates depecated! do not apply! Use task:nodates

requiere:progress

require:priority

require:startdate

require:duedate

require:bothdates

require:anydate

You can require that on the tasks must be present:

progress : any Progress icon
priority: any Priority icon (can be applied not only to tasks)

! All operators below are mutually exclusive. If more than one is specified, the last one "wins".

startdate: start date
duedate: due date
bothdates: both dates
anydate: one of dates
requirestartdate
requireduedate
depecated! do not apply! Use require:startdate and require:duedate

match:startdate

match:duedate

match:bothdates

match:anydate

! All operators hare are mutually exclusive. If more than one is specified, the last one "wins".

collects tasks that have the specified dates in the range. For example, the keyword is This week, and this operator in it's notes. In this case, will be collected tasks that:

startdate: start this week
duedate: end this week
bothdates: start AND end this week
anydate: either start or end this week. This parameter is used by default (if there is no match operator in a keyword topic notes).
startdate, duedate
bothdates, anydate
depecated! do not apply! Use the above syntax

overdue

Progress is less than 100% (or no Progress at all) AND Due date is earlier than today.

Example: keyword Overdue in the config map.

duration:min:N

duration:hours:N

duration:days:N

duration:months:N

collects tasks that have specified task duration.
N - number of time units (or time range).

duration:hours:4 - collects tasks whose duration is 15 minutes
duration:days:1 - collects tasks whose duration is 1 work day
duration:days:1-3 - collects tasks whose duration is from 1 to 3 days

effort:min:N

effort:hours:N

effort:days:N

effort:months:N

collects tasks that have specified task effort.
N - number of time units (or time range).

Examples:
effort:min:15 - collects tasks whose effort is exactly 15 minutes.
effort:min:15-30 - collects tasks whose effort is from 15 to 30 minutes
effort:hours:1-4 - collects tasks whose effort is from 1 to 4 hours
effort:days:1 - collects tasks whose effort is exactly 1 day
complete:N

complete:N-M
collects topics with specified Progress.

Examples:
complete:50 --- collects topics with Progress 50%.
complete:0-50 --- collects topics with Progress from 0 to 50%
complete:0-99 --- collects topics with Progress 100%
deadline collects tasks that have a due date AND a deadline icon.

The collection topic must have a deadline icon, this is usually an icon with exclamation mark.

See keyword Deadlines in the config map.
rollup collects topics for which the checkbox "Roll-up task info" (in the Task Info pane) is enabled
asap
(as soon as possible)
collects tasks with only one date or no dates.

These tasks arecalled Possibles. The target dates is not precisely defined (since one date or no dates). Therefore, they should be performed either from the start date or before the end date, at any suitable time.

Example: collection topic has a period This week, and topic notes have this operator.

While collecting:
1) if a task only has a start date and it is earlier than or within the this week, it might already be tackled. The task gets into the collection;
(2) if a task only has a due date and is later or within the current week, it might need to be tackled. The task gets into the collection;
(3) if the task has no dates, the task also gets into the collection.

This operator is in the keyword Possible in the config map.
advance collects topics (together with their subtopics) that have icons  and . If you use icon for something else, open Data Collection Configuration Map, locate Advance keyword and replace this icon to any icon you want.

This operator collects all tasks that starts before given date range, or with no dates at all. Also it requires both icons above to be set.

Other operators

 

nocheckdates

ignore date filters

Example: You want to collect topics that have a question icon, regardless of whether or not they fall under the filter set by the previous keyword (for example, This week). This operator will do it.

Used in the configuration map in many keywords with icons.

inherit

collects topics matches by previous filters

formula

collects topics with formulas

topicname

matches topics whose text is the same as text on the collection topic.

Example: keyword In-Tray (Inbox) in the config map

topictext:contains

topictext:startswith

topictext:endswith

topictext:equals

TEXT - collection topic name.

This operator collects topics, which text:

contains - contains TEXT
startswith - starts with TEXT
endswith - ends with TEXT
equals - equals TEXT

There is also an optional wholeword parameter. If it is added, then the TEXT is searched as a whole word (that is, the word "text", not the words "contextual", "texture", etc.).

topictext:startswith:wholeword

there may be one more parameter - the search text. In this case, the name of the collection topic can be whichever:

topictext:contains:text - collects topics whose text contains "text" ("text", "contextual", "texture",etc.)
topictext:startswith:wholeword:text - collects topics whose text starts with the whole word "text"

casesensitive:topictext

casesensitive:resources

casesensitive:properties

casesensitive:tags

casesensitive:all

In MindManager, resources, tags, and properties names are case sensitive. Those, resource "Ross" and resource "ross" are different resources. The "Done" tag and the "done" tag are different tags. Property "Expenses" and property "expenses" are different Properties.

By default, when collecting data, case is not taken into account: if the resource "Ross" is specified on the collection topic, then topics with the resource "Ross" and topics with the resource "ross" will be collected.

This operator makes case sensitive for:

Topic text (see operators  topicname and topictext)
Resources
Topic Properties
Tags

For example, if the collection topic contains resource "Ross", and operator casesensitive:resources in it's notes, then topics with resource "Ross" will be collected, but topics with resource "ross" will not be collected!

casesensitive:all - makes case sensitive for all the above criteria.

resource:res1, res2, res3...

-------------------------------

resource:condition:TEXT

-------------------------------

resource:me

collects topics with specified resources

resource:Coleman
collects topics with resource "Coleman"

resource:Coleman, Olivia Smith, J.Harris
collects topics with specified resources



resource:condition:TEXT

Operators with condition collect topics that have resource whose name matches the condition:

contains - contains TEXT
startswith - starts with TEXT
endswith - ends with TEXT
equals - equals TEXT

resource:contains:son
collects topics, that have resource: Davidson or Dawson or Atkinson

resource:me

collects topics where you are assigned as a resource. Before using this operator, you must define your name in the Data Collection options (MultiMaps Settings on the Ribbon), in the "resource:me" field.

Construction is allowed :
resource:Coleman, me, Olivia Smith

This operator is used by the "My tasks" keyword in the configuration map.

resources:all

resources:any

resources:yes

resources:no

all - collects topics that have all resources present on the collection topic and/or specified by resource operators.

any - collects topics that have any of the resources present on the collection topic and/or specified by resource operators.This operator is used by default.

yes - collects topics with resources

no - collects tasks with no resources
resources depecated! do not apply! Use resources:yes.
resources_me depecated! do not apply! Use resource:me.
 no_resources depecated! do not apply! Use resources:no.

ignoreresource:res1, res2...

ignoreresource:me

topics with specified resources are ignored when collecting data

ignoreresource:Coleman
topic with resource Coleman will be ignored

ignoreresource :Coleman, Olivia Smith, J.Harris
topics with specified resources are ignored when collecting data

ignoreresource:me

when collecting, topics which have resource with a name that matches the one you have in MindManager Options (File > Options > User Information > Username) are ignored

Note : ignoreresource operator does not collect anything by itself! It simply ignores topics with resources specified in it's parameters.

ignoreresorces:all

ignoreresorces:any

all - topics that have all resources specified in the ignoreresource operator parameters are ignored.

any - topics that have any of the resources specified in in the ignoreresource operator parameters, are ignored. This operator is used by default.

tag:tagGroup:tagName

tag:tagGroup

tag:?:tagName

 

tag:name:condition:TEXT

tag:groupname:condition:
TEXT

collects topics that have the specified tags

tag:Contexts:calls collects topics with tag "Phone" from the "Contexts" tag group.

tag:Contexts collects topics with any of the tags of "Contexts" tag group.

tag:?:done collects topics with tag "done" from any tag group.

To collect topics with several tags:

tag:Contexts:calls
tag:Categories:office
etc...


Operators with condition  collect topics whose tag name (tag:name ) or tag group name (tag:groupname) match condition:

contains - contains TEXT
startswith - starts with TEXT
endswith - ends with TEXT
equals - equals TEXT

tag:name:contains:process - collects topics that have a tag "Processed" or "Processing" or "In process". Tag group (in this case) no matter.

Possible designs:

tag:groupname:equals:TEXT1:name:contains:TEXT2
tag:name:startswith:TEXT1:groupname:equals:TEXT2

in this case must be matched BOTH tag group name
AND tag name .
tags:tagGroup depecated! do not apply! Use tag:tagName

tags:all

tags:any

tags:yes

tags:no

all - collects topics that have all the tags present on the collection topic and/or specified in operators tag.

any - collects topics that have any tag present on the collection topic and/or specified in operators tag. This operator is used by default.

yes - collects topics that have tags.

no - collects topics that have no tags.

ignoretag:tagGroup:Tag

ignoretag:tagGroup

ignoretag:?:Tag

Topics that have the specified tag from the specified tag group will be ignored when collected.

Multiple operators are possible:

ignoretag:Phase:done
ignoretag:Phase:control
...
in this case, topics with tags "done" and "control" from the tag group "Phase" will be ignored.

Operator syntax is the same as the tag operator (see above).

Note: ignoreretag operator does not collect anything by itself! It simply ignores topics with tags specified in it's parameters .

ignoretags:all

ignoretags:any

all - topics that have all tags specified in the ignoretag operator parameters are ignored.
any - topics that have any of the tags specified in in the ignoretag operator parameters, are ignored. This operator is used by default.

icons:all

icons:any

all - collects topics with all icons set to template or keyword topic

any - collects topics with any icon set to template or keyword topic. This is the default.

ignoreIcons:all

ignoreIcons:any

all - topics with all the icons present in the collection topic are ignored.

any - topics with any icon present in the collection topic are ignored.

Important! If ignoreIcons is used, icons on the collection topic are not to collect topics that have these icons, but to ignore topics that have these icons!

property:propertyName:
Value:propertyType

property:propertyName:
propertyValue

property:propertyName

 

 

property:name:
condition:TEXT

property:groupname:
condition:TEXT

collects topics that have the specified properties

Property type can be: text (Text, Multiline Text, List), currrency or cur (Currency), number (Number), integer (Integer).

If value is numeric, it can be either a number or a range of numbers, for example:property:Costs:0-2000:cur , collects topics which have property value from 0 up to 20,000.

property:City:Belfast:text - collects topics that have a Property named "City", the Property value is "Belfast", and have a Property type of "Text" or "Multiline Text" or "List".

Variants:

property:City:Belfast - collects topics that have a Property named "City", the Property value is "Belfast", property type is unimportant.

property:City - collects topics that have a Property named "City", property type and value are unimportant.

property:?:Belfast - collects topics that have a Property value "Belfast", Property any property name and any property type.

property:?:number - collects topics that have a property type - Number. property name and value ;are unimportant.

etc... - a question mark means that this field can be anything.

Multiple operators allowed:

property:Costs:0-10000
property:City:Belfast


Operators with condition collect topics whose property name (property:name) or property value (property:value):

contains - contains TEXT
startswith - starts with TEXT
endswith - ends with TEXT
equals - equals TEXT

These operators work with text Properties only.

property:name:contains:expen - collects topics that have Property named "Expense" or "Expend" or "Expenditure".

Possible designs:

property:name:equals:TEXT1:value:contains:TEXT2
property:value:startswith:TEXT1:
name:equals:TEXT2

in this case must be matched BOTH property name
AND property value .

property:propertyName:
Type:Value
depecated! do not apply! Use format described above.

properties:all

properties:any

properties:yes

properties:no

all - collects topics that have all the properties present on the collection topic and/or specified in operators property.

any - collects topics that have any property present on the collection topic and/or specified in operators property. This operator is used by default.

yes - collects topics that have properties.

no - collects topics that have no properties.

ignoreproperty:
propertyName:
Value:propertyType

Topics that have the specified Property with the specified value and specified Property type will be ignored when collected.

Multiple operators allowed:

ignoreproperty:Costs:0-10000
ignoreproperty:City:Belfast
...
in this case, the collection will ignore topics with the Property "Costs" and a value from 0 to 10000, as well as with Property "City" and value "Belfast".

Operator syntax is the same as the property operator (see above).

Note: ignoreproperty operator does not collect anything by itself! It simply ignores topics with the properties specified in it's parameters!

ignoreproperties:all

ignoreproperties:any

all - topics that have all properties specified in the ignorepropertyoperator parameters are ignored.
any - topics that have any of the properties specified in in the ignoreproperty operator parameters, are ignored. This operator is used by default.

Copy control
branch copies the whole branch of matched topic
subtopicsonly all subtopics of the found topic are copied without the topic itself.
hassubtopics copying branches, if the parent topic has subtopics, this branch is copied to collection map. If there are no subtopics, the branch will not be copied
centraltopictext adds a topic with the text of Central topic of the source map (usually Project name). Added topic gets a hyperlink to Central topic of corresponding map
maintopictext adds a topic with the text from Main topic of the matched topic's branch. Added topic gets a hyperlink to corresponding Main topic.
parenttopictext adds a topic with the text from Parent topic of matched topic. Added topic gets a hyperlink to corresponding parent topic.
filterdoubles_map after the data collection is completed, from the sub-branch of the topic with this operator will be removed all subtopics, which duplicates are present somewhere else in the whole map
fd_map synonim for filterdoubles_map
filterdoubles_branch after the data collection is completed, from the sub-branch of the topic with this operator will be removed all subtopics, which duplicates are present somewhere above in the branch of this topic (but no in the whole map)
fd_branch synonim for filterdoubles_branch


Combining macro language operators you can create a new collection criteria.

Create a topic with appropriate keyword/phrase and place the necessary operators in its notes, for example:

Possible keyword/phrase Operators What will be collected
My tasks for today today
resource:me
my tasks (resource:me) for today
Oversee the programmers overdue
recource:Coleman
recource:Smith
recource:Raskin
overdue tasks under the responsibility of Coleman, Smith and Raskin
My quick tasks day:0
resource:me
effort:min:5-30
I have about half hour and I want to see my tasks (resource:me) for today (day: 0) which performance takes** from 5 to 30 minutes (effort:min:5-30)