Attention! The Macro language syntax changed since MultiMaps v6.1!
In previous versions, MultiMaps used a colon (:), to separate both operators and parameters. This syntax limited the development of the macro language, so now we separate operators with a line feed (>>) and parameters with a colon.
Now: week:0 >> complete:100 >> resource:Coleman
We also changed the syntax for some operators. For example:
In the table below, we mark Operators with modified syntax in red. Most of the old Operators should continue to work, but we deprecate them as we develop MultiMaps.
If your maps use keywords with macro language operators, be sure to check them against the new sintax!
There are quite a few new operators.
The Data Collection Engine has unique programming language (Data Collection Macro Language) to describe what to collect from source maps and what to copy to collection maps. The user places these commands in the Keywords notes in the Configuration Map or on topic notes in the Data Collection keywords branch.
By default, Data Collection Configuration map location is:
The structure of Data Collection Configuration Map is discussed here.
The Data Collection Macro Language consists of operators and their parameters.
You may use any number of operators, defining a cascade of filters. MultiMaps will colldect a topic if ALL the operators match the given topic in the source map(s).
With this macro language, you can flexibly customize the collection criteria.
Operators are separated by a line feed (each operator is on a new line) or by >> characters. Users separate Parameters with a colon.
When preparing a Template to collect data into it (and processing the Configuration Map), the Data Collection Engine scans all topics and their notes. When it finds operators, it tries to parse them until the end, or until it finds a:
; (semicolon) or
a comment word
Here is a typical example of programming the keyword using notes:
The previous block also can be written like:
More examples can be found in the Data Collection Cofiguration Map.
The Data Collection Engine is described here.
To understand how operators work, 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.
|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 on a 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
Result: filters tasks that are active in a given range of days.
Example: keyword Next 3 days (days:2)
|week:N||the same for weeks|
|month:N||the same for months|
|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:nodates - collects tasks, that don't have both dates (start date and due date)
|nodates||depecated! do not apply! Use task:nodates|
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
|depecated! do not apply! Use require:startdate and require:duedate|
|! 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, MultiMaps will collect tasks as follows:
startdate: start this week
duedate: end this week
bothdates: start AND end this week
anydate: either start or end this week. MultiMaps uses this as the default parameter if there is no match operator in the topic notes.
|depecated! do not apply! Use the above syntax|
|Progress is less than 100% (or no Progress at all), AND Due date is earlier than today.
Example: keyword Overdue in the config map.
| 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
|collects tasks that have specified task effort.|
N - number of time units (or time range).
effort:min:15 - collects tasks whose effort is precisely 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 precisely 1 day
|collects topics with specified Progress.|
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 an exclamation mark.
See keyword Deadlines in the config map.
|rollup||collects topics when the user enables the Roll-up task info checkbox (in the Task Info pane).|
(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.
1) a user may have completed the task with only a start date earlier than or within this week. In this case, Multimaps will collect the task;
(2) if a task only has a due date and is later or within the current week, it might need to be collected. Multimaps will collect the task;
(3) if the task has no dates, Multimaps will also collect this task.
The Configuration Map contains the keyword Possible with this operator.
|advance||collects topics (together with their subtopics) with the icons and . If you use icon for something else, open Data Collection Configuration Map, locate the Advance keyword, and replace this icon with any icon you want.
This operator collects all tasks that starts before given date range or with no dates. It also requires both icons above to be set.
| 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.
It is used in the configuration map in many keywords with icons.
|collects topics matched by previous filters|
|collects topics with formulas|
|matches topics whose text is the same as the text on the collection topic.|
Example: keyword In-Tray (Inbox) in the config map
TEXT - collection topic name.
MindManager treats resources, tags, and properties names according to their case. Therefore, resource:Ross and resource:ross represent two different resources. "Done" tag and "done" tag are different tags, etc.
By default, Multimaps does not consider the case when collecting data. If a collection topic contains the resource Ross, then MultiMaps will collect topics with the resource Ross and ross.
This operator makes the following attribute case sensitive:
casesensitive:all - makes case sensitive for all the above criteria.
collects topics with specified resources
collects topics that have all the resources present on the collection topic and/or specified by resource operators.|
any - collects topics with a resources specified on the collection topic and/or specified by resource operators. Any condition is the default.
yes - collects topics with resources
no - collects tasks without 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.|
MultiMaps will ignore topics with specified
resources when collecting data.
MultiMaps will ignore topics that have a resource with a name that matches the one you have in MindManager Options (File > Options > User Information > Username).
Note : the ignoreresource operator does not collect anything by itself! It simply ignores topics with resources specified in it's parameters.
all - MULTIMAPS ignores topics with all parameters specified in the ignoreresource operator.
any - topics that have any of the resources specified in in the ignoreresource operator parameters, are ignored. This operator is used by default.
collects topics that have the specified tags
tag:Contexts collects topics with any of the tags of "Contexts" tag group.
tag:?:done collects topics with tag "done" from any tag group.
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.
in this case must be matched BOTH tag group name
AND tag name .
|tags:tagGroup||depecated! do not apply! Use tag:tagName|
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.
Topics that have the specified tag from the specified tag group will be ignored when collected.
Multiple operators are possible:
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 .
all - topics that have all tags specified in the ignoretag operator parameters are ignored.
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.
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!
collects topics that have the specified properties
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 - 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:
Operators with condition collect topics whose property name (property:name) or property value (property:value):
These operators work with text Properties only.
property:name:contains:expen - collects topics that have Property named "Expense" or "Expend" or "Expenditure".
in this case must be matched
|depecated! do not apply! Use format described above.|
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.
Topics that have the specified Property with the specified value and specified Property type will be ignored when collected.
Multiple operators allowed:
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!
all - topics that have all properties specified in the
ignorepropertyoperator parameters are ignored.
|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|
this operator will remove all duplicate subtopics from the sub-branch of the topic after the data collection completes. The duplicates are present somewhere above in the branch of this topic (but not in the whole map)
|fd_branch||synonim for filterdoubles_branch|
By 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
|my tasks (resource:me) for today|
|Oversee the programmers||overdue
|overdue tasks under the responsibility of Coleman, Smith, and Raskin|
|My quick tasks||day:0
|I have half an 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)|