Hi all,

Does anyone know of a filter operator that accepts a list of titles as 
input, the operand is the name of a list field of the current tiddler, and 
the output is all input titles contained in the list field?

I've looked at the *listed* operator but it's not the same function. I'm 
thinking of creating my own custom filter operator to do this.

My usecase is the following:

In my personal knowledge base setup, I have *topic*, *note*, *task*, and 
*bookmark* tiddlers that are linked together. When I create these tiddlers, 
I assign a unique identifier which I call *pkb-id*. This is currently just 
the tiddler creation date in a specific format. 

Let's say for a topic tiddler, I may have several note tiddlers linked to 
it or several related bookmarks or tasks. To do this, I create a *notes* or 
*bookmarks* field in the topic tiddler that list all the pkb IDs of the 
related tiddlers. I then use a conditional view template that reads these 
list fields and displays in the tiddler body all the related notes, tasks, 
and bookmarks for each topic tiddler.

I have an existing implementation that works but that, I think, is horribly 
inefficient. I use *enlist* and tobi beer's *filter* operator. For example, 
if I want to list all the related notes of a topic tiddler, I currently do 
this:

<$vars 
subfilter="[all[tiddlers]!is[system]tag[$:/.em/type/note]field:pkb-id[%inputTitle%]]">
  <$list filter="[enlist{!!notes}filter<subfilter>sort[title]]"
     emptyMessage="There are currently no notes being referenced by this 
topic"
     template="$:/.em/templates/pkb-list-item"
  />
</$vars>

Basically, I loop thru all the note tiddlers for each ID listed in the 
notes field, checking the *pkb-id* field of each tiddler if there's a 
match. Imagine if I have a topic with a hundred related notes. That is 
going to make things very, very slow.

So now what I want to do is loop thru all the notes and check if each 
note's *pkb-id* is contained in the notes field of the current tiddler. 
That will be just one loop no matter how many related notes there are.


Regards,

Eric

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this group, send email to tiddlywiki@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/73aed753-17e6-482e-bf98-05c6748fdcc0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to