Unable to use "Use Columns" in Map view to group notes by $Category attribute in Tinderbox 9.5.1

I am using Tinderbox 9.5.1 (b598) and am trying to use the Map view to group my tasks by $Category attribute. I have set the $Category attribute for each task and have selected the notes in the Map view, but the “Use Columns” menu option is grayed out and I am unable to group my tasks.

I have a “buy task” category which includes tasks to “buy apple”, “buy fuel” and “buy macbook”. I also have an “app” category which includes tasks to “install moneywiz”, “install clashx” and “install kopia”. I want to be able to group these tasks in the Map view by their respective categories.

The column view option is a feature of Outline view only. This is why it is greyed out in other views. That makes sense, as most view expand in 2 dimensions where as an outline expands in one dimension (vertically on screen)

It is true that Attribute Browser view allows use of columns, but there it is implemented via different mechanism.

Also, Column view is not used for sorting but simply for giving a table-type one-screen display of one or more extra attributes. To group items on a map you could use $Sort (and $SortAlso) values applied to the container of the map (i.e., in outline view, the container holding all the map’s items). You can also use smart adornments.

See this recent thread, How are Tinderbox's map cards grouped by prototype?, for more explanation of how you can sort/group in maps. The thread also covers use of smart adornments.

Another approach is to make a new tab and use Attribute Browser view. There, you select you maps container as the scope of the view and choose $Category as the attribute of interest. Now you will see banner headings for each $Category value in use above a list of notes i=using that value: you can do a lot more.

In summary, remember, column view is only for Outline view. Also, insisting on only using one view is like buying a racing car and never getting out of first gear. All the views use the same underlying data, you are just seeing it visualised in different ways—ways that can help with a task that may be difficult/not possible in other views.

You could also use Adornments, i.e., the “Smart Adornment” capability. Using a Query Syntax the adornment will pull notes on to the Adornment that meet your query criteria.

How many tasks do you have? And how often do they change category? How many categories do you have? How often do you add new categories?

For moderate numbers of tasks, manual placement is really good. You can manually arrange a couple of hundred tasks in an hour — an hour that you can also use to review the data, which is a good thing!

Larger arrays might benefit from smart adornments, which can automatically gather the notes and assign them their prototypes and appearance.

If new categories appear all the time, attribute browser might be the best tool for this.

1 Like

Yes. I recently organized tasks using outline, and they have many levels. In order to extract the high-priority tasks from the map vision and display them in groups, I finally found that the agent could meet my needs. Forgive me, I only started Tinderbox last year, I am a novice, I admit I am ambivalent, if I want to pursue complex requirements, I need more learning costs, learning Agent, learning smart adornments, but I think it’s the query syntax that’s more difficult. In order to learn those query, where should I start?

No need to apologise. We all started at some point. In Tinderbox you are trading power for some learning. Instead of ‘wizard’ buttons that do a task for you with minimal choice as to outcome, you decide what you want to and write the action code. This also means there is usually no ‘correct’ way to do a task, but several although at least one is likely to suit your style of work (but might be the worst choice for some other user).

So, “what is the right way…?” thinking doesn’t help with this tool. Instead, embrace constraints: things you can’t or don’t like to do. Avoid those. Pick a solution that’s closest to how you like to do things. But if your looking for dialogs where you type in the boxes and click the “shown me the answer” button, you may be disappointed. There is some truth in the movie quote “With much power comes much responsibility”. The more choice we ask for from a developer, the more we have to learn to do the choice we have made. this is not least because of the false assumption that we all to the same thing in the same style. The community may be small here but Tinderbox users are doing very different things. Whether it is personal style of work, process or subject area or all of these, it isn’t the same experience.

‘Leaning’ has become a proxy insult for bad design, but I think it is wrong. Tinderbox is not ‘hard’ but it does repay a willingness to learn and just assume your very personalised task is a button somewhere in the app.

The community will help, as shown by the very detailed demo written for you this morning taking >1 hour of somebody else’s free unpaid time to write. In that context, complaining about learning can feel like asking others to to you work for you. I’m not implying you are ding that but simply pointing out the complaint about learning my fall on deaf ears here. We’re willing to share what we’ve learned in the hope others will learn and pass it on. Fine control doesn’t come from type-in-box solutions (unless you’re paying top $ for a personal solution).

Start with a real world question, as you did with the word count one. This makes it easier to define the question and to build a test.

When using queries, you are essentially asking the computer “give me a list of …”. The parts to the query are a series true/false questions. Not necessarily literally. thus we might ask give me the child notes of container ‘XYZ’ that have more than 20 words. This takes query 2 terms. First, the items inside ‘XYZ’


and they must have something else, the & below:

inside("XYZ") &

and that is having a word count of over 20 words:

inside("XYZ") & $WordCount > 20

Tada! Query done. All of that is written in action code. All the parts of the above query you can look up in this listing that’s the learning part. First you figure out the question you want to ask, then state it in terms the program can understand (action code), then use it in your document. It’s not complicated; i’,m able to explain this to you now only because I’ve previously followed those same steps and learned through practice and repetition.

The biggest assist to is to try things out with a problem, e.g. “can I calculate the word count from all the notes in the is branch of the outline?” is better than “how do I total things?”. Then, just as in the example TBX file you provided us you can then test the solution and, having checked you get the desired result use the code/knowledge in you main work files. As the latter tend to be larger and more complex, doing small tests is always go as there are fewer possible conflicting things. Thus, if a technique works in a small test TBX but fails in a bigger one, the failure is not the technique but other pre-existing code in you big document that is interfering. that insight alone can save hours, days of head-scratching (speaking for long experience).

I hope that’s helped explain things a bit more. :slight_smile:

1 Like

You might want to check out these videos:

  1. Tinderbox Training Video 06 - Understanding Agents & Queries (Part 1)
  2. Tinderbox Training Video 07 - Understanding Agents, Queries, and Actions (Part 2)

There’s also a pdf on agents and actions, built into the Help menu.

But for most purposes it’s really simple:


finds notes where the attribute ($MyString) has a specific value.


finds notes where the attribute ($MyNumber) has a specific value.


You can also use > and <.

$MyString=="albatross" |  $MyString=="ptarmigan"

finds notes where the attribute has either of two values.

$MyString=="albatross" &  $MyNumber>3

finds notes where MyString is albatross and MyNumber is greater then 3.

There’s lots more, but this will get you started. Make a throwaway Tinderbox, make a few notes, and invent agents to try out.




In my other post, I asked how to count the number of words written per day and provided a tbx file, no doubt I wish there were experts like @mwra who could provide a runnable tbx file.

I’m reminded of what you said about ‘days of head-scratching’. Yes, I especially want to avoid those days of head-scratching. Although I am a computer graduate, my math and programming are a mess, and I’m better at literary writing and working with words than I am with code and numbers.

When I see code and numbers, I feel like I get motion sickness. That’s certainly an exaggeration. Humans have a natural tendency to avoid pain and to take shortcuts, and I am no exception.

Please forgive me if I’m not precise or rigorous in my representation of ‘query’, I’m actually referring to the tinderbox scripting language, or Javascript, and I’ll try to be as precise as possible in my later exchanges.

Thanks to mwra for spending hours writing the demo code for me and explaining what each piece of code does. If the forum had QR codes for payment, I would not hesitate to use Alipay and WeChat to pay, because I believe that quality advice and guidance should be rewarded, not just expressed through words.

With the help of my recent mwra, I gradually used Tinderbox to build my own personalized project management system. I used map view for timeline and outline + domain name to organize things, and my life and work became clear and organized.

For years, maybe 10 years, I was looking for the ideal project management system, like Smartsheet, Clickup, but it was too slow and too much inconvenient not to use with limitations. I started to try to customize and design my own project management system, like Notion, Scrivener, iThoughts, Devonthink, WorkFlowy, Moo.do, Roam Research, but it just felt awkward, uncomfortable and uncomfortable.

At tinderbox, I gradually worked on designing a project management system that was, by far, a more desirable one. I loved tinderbox and appreciated mwra’s help.

But I soon realized that if I wanted to improve the ideality of the system, the scripting language would be impossible to bypass. There is no doubt that mastering a programming language will be a lot less annoying at work, and now that I am 35 years old, in a time when I often feel a lack of time, I really hope to install javascript script language into my brain as an app.

However, I still have to accept the reality and take it one step at a time. Now in the process of learning scripting, like mwra said, I will first create a demo to test it.

mwra’s phrase “days of head-scratching” is an apt description of how I often work, but it’s also a sign that one is making progress. ::

1 Like

Actually, you can support @mwra, he has a Donations page setup on PayPal to support his aTbRef development efforts. I include the link to support Mark in my later training videos, which also include my Becker’s Patreon program, which you may find value in joining.

Donate: Support Market Anderson, aTbRef, and Mark’s decades-long support of the community

Please donate to Mark Anderson. Mark has set up a PayPal channel (Donate) to receive donations for his work on aTbRef and the community. I’ve set up a monthly contribution for him. As an aside, I regularly share parts of my Patreon proceeds with him—typically via an Amazon UK gift card—whenever he helps me/us with a big part of what we go over. I thank you for your support of Mark.

Congratulations, this is awesome!!!

I am with you on this boat, as are many. Here is a post a made a couple years ago RE my tinderbox journey: An end-to-end Professional, Academic, & Personal 5Cs of Knowledge Management Workflow (Updated).

No apology needed! New is new. The hard part is the natural tendency to want (insist!) that the new is like the old (i.e. no learning involved). Action code in Tinderbox has been 21 years in the making but is now the primary ‘language’ of the app. There is plenty of documentation (Help, Tutorials in Help menu, aTbRef, etc.) and if still suck ask here. The nature of a toolbox app is that, against intuition, you may well be doing something no one has done before. Still, by breaking down the problem, fellow community members can usually help eve if the work is not in their domain/written language script.

†. Action code is not a computer language. I say this only because for those with some grounding in programming that can be the assumption. This leads to two important points. Firstly, it is most likely does not follow the pattern/habits of your favourite language: accept this and move one. Secondly action code will lack some constructs you might expect in something designed as a language (e.g. elseif or case operators, etc.). Again, accept and move one. Action code is its own thing, grown organically in the app over the years. It just is what it is. I don’t think there is any relation to JavaScript (or not intentionally—but i’m happy to be wrong)

1 Like

No relation to JavaScript at all, really.

The Tinderbox action language really is a language at this point, but it’s a very simple and forgiving language. More to the point, you really only need a few small parts to do almost everything you need.


This stores a value in an attribute of this note.


This stores a value in an attribute of this note whatever is found in an attribute of some other note — in this case the parent of this note. “parent” here is called a designator; it tells Tinderbox what note you’re looking for.

if($MyNumber==42) { $Color="red" } else { $Color="green"; }

If the condition is true, set the $Color of this note to be “red”. Otherwise, set the $Color to be green. The else clause is optional.

This will handle almost all your action needs!

1 Like