Select multiple notes in map view by, e.g., prototype

I couldn’t find a way to do this. As far as is known, is there a way to select multiple notes in map view by their prototype? Specifically, in my case, all notes of prototype X.

& oblige.

No, because there is no action that selects notes.

Instead, actions collect notes. For example,

collect_if(all,$Prototype="Dinosaur",$Path)

builds a list of all the notes that use the prototype “Dinosaur”. This particular construction is sufficiently common that there’s a shorter form: find($Prototype=="Dinosaur").

So, if you wanted to turn every Dinosaur green,

$Color(find($Prototype=="Dinosaur"))="green";

Of course, if you wanted green Dinosaur’s, you could just make the prototype green and let the Triceratops inherit the color.

I wanted to select all notes in the current branch of a map, having prototype X, so I could drag them, en masse, to one side and out of the way.

Thanks for the tips.

How about the recently added select(scope)?

Use find() to make a list of all the notes of prototype ‘X’ and whose $Container is the maps’ parent container and they are not aliases. The extra two conditions ensure that we only find notes in the current map and we ignore false detection of aliases (as find doesn’t de-dupe its matches, unlike an agent query).

So if the map is in container at $Path /Content/Y we could have a stamp like:

var:list vList;
vList = find($Prototype=="X"&$Container=="/Content/Y/"&$IsAlias==false);
select(vList);

Stamp any note in the map, so the stamp is run on something, even though the code actuially acts only to select the desired notes.

Note. Not tested (late here and just turning in) but I think it could work.

1 Like

Ran a test this morning and the idea above works. See a demo file: select-notes.tbx (156.8 KB)

Notes:

  • when using the stamp to select the notes of the map, you must select a note. It doesn’t matter which not—any one will do, but stamps must be run against a selection.
  • I’ve included a specimen stamp, to use after selection, that moves all (selected/stamped) notes right 25 map using (i.e. $Xpos+25). If doing this task a lot to might have a suite of up/down/left/right movement stamps to enable all notes to be moved easily a precise amount
    ** extra credit application of this is to have a note setting the amount to move. … Meh, I’ve added this to the demo too, see note /Move-control and associated stamps. ’

The last can be see here:

Using the selected stamp moves the selected note (here, ‘test me’) -5 map units—i.e. 5 units upwards—on the map)

var:list vList;
vList = find($Prototype=="X"&$Container=="/Content/Y/"&$IsAlias==false);
select(vList);

This is it. Thank you for spending your time. Now I can select all of my X notes and drag them around en-masse:

:grin:

Thanks, that image helps give context to the request, as ‘just’ drag-selecting all the desired notes is likely hard to do. When I said select() was ‘recent’ I should have noted it needs Tinderbox v9.6.0+.

Anyway, it all looks interesting. Good luck with the project.

Fascinating? What is the project? About how many notes are in this map?

I began a list of things I would like to watch, read or listen to (sound familiar @eastgate? Ref. “visual anomolies in map view”). I started with a few notes of each type and began to try out prototypes for each kind of thing (and stamps funnily enough, given the above solution to selecting large numbers of notes).

It became apparent that I was mostly interested in television and film and I abandoned reading and listening in favour of those two. To which I began to add actors, writers, directors. Here I realised that while a prototype is good for a “writer”, “actor”, or “director”, it is not good for a “writer” who is an “actor” or a “director”, or one who is all three (stand up and take a bow please Donald Glover).

I was interested in this because of the number of times I’ve been distracted from the screen wondering what it was I had seen so-and-so in, then waded through either IMDB or Wikipedia looking it up. I have some fairly loose rules, and it isn’t designed to be a reinvention of either of those two things. I must have actually watched the TV show or film and I must be at least aware of the person - even if I can’t remember their name. I though it would be kind of fun to do, remembering a name, entering the person, show or film onto the map, adding links - you see things…

I saw that I could name links between two notes to create the concrete representation of an association between two things. Which is a bit like have a visual representation of a relational database - a note linked to another is a tuple, a row in a table. Okay, no table is defined. Except that, if you take the prototypes as tables, then I have tables for each of “person”, “tv show” and “film” and can show the connections e.g. (Donald Glover – actor → Atlanta), (Donald Glover – writer → Atlanta), (Donald Glover – director → Atlanta), which turn out to be rows that have broken out of another table, say “tvshow_role”, that describe the many-to-many relationship between person and show. Likewise for film.

Something like this:

And then, if tv show and film are just different types of media, like this:

Nic

1 Like

Out of interest, have you tried using Hyperbolic view for exploring the ‘map’? Different view use the same underlying data, so the act of viewing in another view type doesn’t change the map. Using a new tab for a different view also makes it possible to toggle between the two.

The point here being that hyperbolic view shows only items that ate linked, in or outbound by any link type). That might help foreground a particular subset of items that might be hard to ‘see’ in the big map.

I did, but only very briefly. I was expecting to be able to traverse between notes, e.g. film → actor → show → other actor, etc., but could not work out how to do that. However, I did not spend an appropriate amount of time on it to warrant asking for help.

Hyperbolic view. If your notes are linked, focussed on a Film note you should by default see all linked items (director, actor, etc.). If you’ve typed links by purpose, then the view allows you to filter which links are included when building the view.

Clicking on a note selects that note in the text pane.

Double-clicking on a note, re centers the view on that note (i.e. the central note of the graph denoted with a red border).

In recent releases, Hyperbolic view has been getting some polish and may have gained capbilities not present when you last used it. More on navigating the view can be found here: Navigating hyperbolic view.

As you map is highly linked, hyperbolic view ought to give you a useful perspective on the data. In such a complex network of links, link types are useful. also, if person X is, for instance, both an actor in and director of film Y, it pays to link X to Y multiple times, once for each role of appropriate link type. Part of the concept of the Hyperbolic view is that it enables you to see such a network more clearly, even if all items are on the same map. Relevant to the last, Hyperbolic view works off links so the is no need for all note to be in a single container, i.e. ‘on’ the same map.

As Hyperbolic view maps to 7 links distance (more is cur for performance reasons) you ought to be able to play Six Degrees of Kevin Bacon. :slight_smile:

Amusingly, my undergraduate roommate has a remarkably low Bacon-Erdös number.

1 Like

I have the hang of the hyperbolic view. Thanks for the pointers.

Kevin Bacon isn’t on the map funnily enough. I must have watched something in which he appears so.