smartrule to add data

Guy M. shared this question 15 months ago
Discussion Open

Hello, I want to use a smartrule to add data and values to properties.
It is possible, thank you in advance,

Replies (1)


Can you provide a bit more information on what you want to achieve?


for example, I want to add a text value to the last level in a "Last level" property

I also want to increment a numbering.

For example

Level 1 "01".

Level 2 "01.01

Level 3 "01.01.01"on 7 levels

Thank you very much in advance


I assume that you've had a look at MindManager's inbuilt numbering system which can add topic numbering automatically based on level and sort order. This can provide numbering like "1", "1.1", "1.1.1", etc, but not with the leading zeros.

If this isn't acceptable then I'm afraid that the alternatives are fairly limited. The first problem is that while MindManager obviously "knows" about topic level and sort order, it doesn't make that information available directly to users. For example, when topic numbering is applied the numbers that appear aren't available to users. The MAP add-in does have a feature to provide the topic level as an extended property, but there is no equivalent as yet for topic sort order.

The other problem is that while topic text can be used as a trigger in a SmartRule, it is not available as an effect. It may be possible to do what you want with a macro, but unfortunately I don't think it's achievable otherwise.


thank you for your reply


Hi Guy,

Now when the numbering has been answered, I just want to let you know that SmartRules can insert properties. I just finished refining one of our Risk Matrixes where SmartRules insert hidden properties to all topics inserted in the Matrix that are summarized in the top right corner of the map. The map contains all instructions needed.



Hi Guy,

Apologies - Joel is correct. While I was right about the limitations around numbering, I realise I slightly misread your second comment. I thought you wanted a SmartRule to add topic text which you can't do, whereas you were asking about using a SmartRule to add a topic text property, which as Joel points out you certainly can do.

Joel's map is pretty neat and would be a great tool for risk assessment, but it doesn't address what you wanted to do directly. However, it does suggest an solution to your first request, for a text property to be added to flag the lowest level topic in a hierarchy.

While I indicated that accessing sort order numbering isn't possible at this stage, I also noted that the MAP add-in has a feature that can provide the topic level as an extended topic property. This property can be used with a couple of formulas and a SmartRule to identify the lowest level topic or topics and to mark them with a text topic property, a text tag, an icon and/or a fill colour or some other formatting effect.

Assuming you have downloaded and installed the MAP add-in, there are two ways to do this. The first and by far the simplest can be used if you know in advance what the lowest topic level in the map will be. In this case you can use the MAP add-in to add a hidden topic level numeric property to all topics, and then write a SmartRule to add a text property like "LOWEST" whenever that number equals the number of the lowest topic level you have nominated (which, confusingly, will always be the highest topic level number, as numbering starts with 1 for main topics).

This will behave dynamically, so as you promote and demote topics the topic level number will change and the LOWEST tag will either be removed or added. This approach could also be adapted to work with a range, so you could flag all the sub-topics at say the fourth level or lower in a map.

The second option, where the LOWEST property is applied to the lowest level topics in the map regardless of what level that is, is a bit more complex. As with the first option this approach requires the addition of the MAP add-in topic level numeric property to all topics. Then the following formula is added to the central topic:

[Lowest Level]=MAX(Descendants.[Topic Level (#TL)])

This identifies the lowest level topic(s) in the map, which consequently have the highest Topic Level number.

Then the following formula has to be added to every subtopic in the map:

[Lowest Level Check]=CentralTopic.[Lowest Level]==[Topic Level (#TL)]

This compares the level number of each subtopic with the number of the lowest level subtopic in the whole map. If there isn't a match the formula will return a 0, but if there is a match (ie, the subtopic is in fact the lowest or equal lowest in the map) it will return a 1.

Then a Lowest Flag text property has to be added to each subtopic, and the following SmartRule created:


This rule will show the word LOWEST in the Lowest Flag text property for all subtopics where the Lowest Level Check returns a 1 (I've also added a fill colour as another effect). As with the simpler approach, subtopics can be promoted or demoted and the LOWEST property value (and in my example the fill colour) will be added or removed appropriately.

Finally, the following formula can be added to the central topic to find the total number of lowest level topics:

[Total Lowest Level Topics]=SUM(Descendants.[Lowest Level Check])

You use Sum here rather than Count as you want to total only the subtopics where the Lowest Level Check is equal to 1.

There is a downside to option 2; the process of evaluating formulas and the SmartRule across all subtopics may affect performance in very large maps. Also, the approach will vary slightly if you want to identify the lowest level topics in each branch. When I get the time I'll either post an example map in the comments here and/or write these approaches up in more detail for my blog.