Formula: counting children or descendents, not their properties

  • 5
  • Idea
  • Updated 4 years ago
  • Under Consideration
Hiya. I'm a long term MM user and am just getting my head around the fab new formulas construct.

I'm mapping an organisation and so want to be able to actually count the child or descendent nodes at each manager (total org size, number of direct reports). I've successfully managed to get the formulas to work on child/descendent properties but can't figure out a way to get it to count nodes without properties.

I know I could add a property of [Unit]=1 to all my nodes to make it work, but that would be painful and ugly.

Have scanned the documentation and done some searching here, but no joy so far...
Photo of Mark

Mark

  • 3 Posts
  • 2 Reply Likes

Posted 4 years ago

  • 5
Photo of Michael Deutch

Michael Deutch, Official Rep

  • 438 Posts
  • 76 Reply Likes
We don't have a function for counting topics (without properties) yet. Great idea, I've added this to our backlog. 
Photo of Mark

Mark

  • 3 Posts
  • 2 Reply Likes
Thanks. To give you a bit more on the overall requirement...

The idea is that you would load your organisation (hundreds or thousands of people potentially) into a single map with the organisational hierarchy. That automatically gives you managers (# children > 0) and non-managers (# children = 0).

Any employee might have properties associated with it like job grade, salary, or length of service.

First the node needs to be able to figure out whether it's a manager or non-manager based on whether or not it has children. That's important for formatting and other potential formula calculations.

If we can count children and descendants without properties then that gives us the # direct reports and total organisation size.

Each employee would also have an implied position in the hierarchy in terms of their level. Are they at the top of the tree (level 1) or at the bottom? So we'd need to be able to retrieve the level of the current node and manipulate it (in case it's part of an organisation rather than the whole org). So I'd want to create a formula that might look like: [Org Level] = Level(Self) + 2. Applied to each node, it would show the centre of the map as level 3, the next level as 4, etc.

I'd also like to know how many levels are below any manager to understand organisational depth. So if a manager has one level of management below them (Manager1 -> Manager2 -> Employee) then their LevelsBelow would be 2, 1, and 0 respectively. Again, just telling us something about the nodes on the map rather than the properties in them.

I'd also like to be able to count how many there are of different types of nodes under a target node. So, for example, I'd like to know how many managers vs. non-managers I have in my organisation. That means I'd need to do some sort of conditional count based on the properties of the nodes (count all the decendents that don't have children) or have a hidden conditional formula on each node (set manager-flag to 1 if I have children) and count those.

I haven't played with conditional properties yet, but to make this really elegant a property would need to know whether to hide/show itself based on the value. So if I'm dragging an organisation around and give someone employees, then they become a manager and the manager-related properties (org size, total directs, org depth) would become visible.

And of course, with this many properties and the potential of a very large map, the bulk addition and update of properties is an absolute must. It just won't work if I have to add multiple properties to hundreds of nodes. I need to create the properties and formulas on one node and then be able to paste them across the entire map, similar to a "fill down" in Excel.

I've posted a sample map here where I've added a property of Unit=1 to each node and then used it for some basic formulas. I've managed to reproduce a couple of the things mentioned above, but not many.

Really great work on the formulas and I don't think it will take that much additional work to make them really powerful.

If you have any other questions, please let me know.

Cheers,
Mark


Photo of Michael Deutch

Michael Deutch, Official Rep

  • 438 Posts
  • 76 Reply Likes
That's no small request :)

So to empower your use, it sounds like we're missing...

  • Some sort of conditional setting to indicate whether you're a manager (with direct reports) or not. 
  • A topic count function that returns number of topics for a range (e.g. map, branch, descendants, etc...). 
  • A method of understanding level in hierarchy (where the hierarchy may or may not start at the central topic). 
  • You also indicated the desire to know how many levels deep it goes from the current selected topic.
  • A method of counting topics in range that have children or don't have children. 
  • A method to display or hide properties based on conditions
  • Better methods to copy/paste properties onto multiple topics.(bulk)
  • Method to update multiple property topic values (bulk editiing)...
Did I miss anything? 


Photo of Mark

Mark

  • 3 Posts
  • 2 Reply Likes
You make me sound so greedy!!

Yes, I think you pretty much have it in your list. Taking it purely technically...
  • Need to be able to return # children/decendents of a note and use it within a formula. In this case something like
    [Direct Reports] = Count(Children)
    and
    [Total Reports] = Count(Descendents). 
    Same general construct as is already there, but without the [property] which is limiting the counting currently to those with the specific property, allowing it to count all children/decendents on the map below the current node.
  • A simple IF construct would then allow other flags to be set.
    [IsManager] = If(Count(Children)>0,"yes","no")
  • A construct that could return levels might look like...
    [NodeLevel] = Self[Level]
    or
    [LevelsBelow] = Self[Depth]
    allowing me to create
    [BranchDepth] = Self[Level] + Self[Depth]
  • While we're at it, making more information about Self available through properties would probably be helpful. Properties like Label (current label text), Font, FontColor, FillColor, Notes, Icons, Link, Files, Image, Resources, Task timing, Tags... And if we could set them as well as query them then lots of different magic could happen! But that IS a very big ask with lots of other implications.
  • I've seen more in-depth requests on the community for bulk copying/pasting/editing of properties so I think those are probably in your list already.
  • The formatting one is a "wouldn't it be nice" rather than a showstopper. But basically it would be an expansion to the existing SmartFill feature to allow node formatting to be based on a wider set of criteria and to affect a larger set of node features. Things like:
    Set a priority flag or other icon
    Change the fill and font color
    Change the text of the node (append?)
    Show/hide a property
    All based on a property, built in information (existing functions), or node label

So in my perfect world, I'd have a hidden IsManager property on each node which would set an appropriate icon depending on whether the value was "yes" or "no". Manager nodes would vary in font size based on the size of their organisation. Managers with too few/many directs would be flagged by fill colour. And as I dragged people around the map to change the organisational design, the formatting would all adjust telling me if I was creating something better or worse.

Keep up the great work!!
M
Photo of Alex Gooding

Alex Gooding, Champion

  • 886 Posts
  • 223 Reply Likes

To quote Mark: ".... an expansion to the existing SmartFill feature to allow node formatting to be based on a wider set of criteria and to affect a larger set of node features. ...All based on a property, built in information (existing functions), or node label"

Much of this is what the Power Markers add-on with its Active Legends facility used to do before it was purchased by Mindjet and dumbed down to become the Marker Index (now incorporated in the Map Index). When this issue was raised with Mindjet (see this thread and many others: https://community.mindjet.com/mindjet/topics/powermarkers_have_stopped_working_in_mindjet_14 ) the response was that the Smart Fill facility would be developed to allow for a wider set of conditional formatting options. So far this has not occurred but I hope it will be addressed in the next version.

As I said in the Power Markers thread about a year ago:

"Power Markers was probably the greatest add-in ever produced for MindManager. While it may have had a few rough edges and was probably not appropriate for people just starting in mindmapping, it was amazingly powerful, allowing power users to develop their own system of visual categorisation based on topic status and then apply it automatically to their maps.

"It is years ahead of anything else and I am very disappointed that Mindjet has not persevered with overcoming any technical difficulties to retain it in the latest version. If they had done so and made the interface a little more accessible they would have cemented MindManager as the leading mindmapping program in terms of innovation."