Here is the dynamic table I use to show tasks without a due date:
<<table-dynamic filter:"[tag[todo]!tag[done]due[]]" fields:"tbl-checkbox title tags">>
All is well except that it shows ‘todo’ tag in every entry.
How can I make the dynamic table show all tags except ‘todo’?
This is a question about filter and table-dynamic has nothing to do with!
- In the example you provided
[tag[todo]!tag[done]... means all tiddlers has todo tag but not done tag
- Then what do you mean by
due[]? I think it returns tiddlers which have an empty due field!
Test first with your filter and see if you get the correct results or not! e.g
<$list filter="[tag[todo]due[]]">
</$list>
Each item in the list is being asked to display
fields:“tbl-checkbox title tags”
so surely you should no be surprised to see “todo” as it happens to be a tag?
This is a case which demonstrates the value of using fields for tiddler types, rather than tags, so tags are left free for ad hoc organisation.
I use the object-type field eg object-type=todo in this case a tiddler can only be a todo or something else. If this was the way you listed todo items object-type[todo] in your filter, yes it is a fieldname[value] operator then todo would not be in your tags.
@Mohammad Sure, The table displays the tag field. All records will carry ‘todo’ tag because the filter says so. What I want is the table should not display ‘todo’ tag.
Currently the table shows:
|Task 1 | todo sometag anothetag |
|Task 2 | todo anothertag |
I want it to show:
|Task 1 | sometag anothetag |
|Task 2 | anothertag |
Can this be done?
@TW_Tones I agree. I, too, would put that in a field. But this is coming from a plugin I use — Projectify. The plugin is setting tags. The table displays ‘todo’ in every row. I wanted to avoid that.
Yes, it possible but at the cost of writing a custom template like mytags and then instruct it to exclude the todo tag! So you can clode tags column template now and see how to do the job!
I expect you solution may use this filter “[all[current]tags[]] -[[todo]]”
Eg;
[Edited] to fix order of the output
<$list filter="[all[]has[tags]]">
<$link/>
<$list filter="[all[current]tags[]] -[[todo]]" variable=each-tag>
<$macrocall $name=tag tag=<<each-tag>>/>
</$list><br>
</$list>
@TW_Tones Yes. That was what I wanted. I have added some table elements thus:
<table class="table-borderless table-lines table-hover-cyan w-100">
<tr>
<th>Task
</th>
<th>Tags
</th>
</tr>
<$list filter="[tag[todo]!tag[done]due[]!tag[Inbox]!priority[1]]">
<tr>
<td><$link/>
</td>
<$list filter="[all[current]tags[]] -[[todo]]" variable=each-tag>
<td><$macrocall $name=tag tag=<<each-tag>>/>
</td>
</$list>
</tr>
</$list>
</table>
to produce the table.
@Mohammad What I was not able to get was how to generate this table using the Dynamic Table macro.
@Mohammad Thanks.
I looked it the $:/plugins/kookma/shiraz/templates/body/tags.
But cloning and editing it is way beyond my current level of expertise. 
@Mohammad Thanks! That did the trick.
Is not there a way I can apply this only to a particular table? That would also mean that I won’t have to worry about:
You have to develop your own template!
@Mohammad Thanks.
Come to think of it, I already know the template I need. I can clone it and call it ‘tags-notodo’. The question is how do I assign it to the field? Because the macro will still carry ‘tags’ as a a field.
@deshmukh every template tiddler has a tbl-column-list
table-dynamic scan that list and determines which filed shall be processed with that template!
See Shiraz 2.4.3 — create stylish contents in Tiddlywiki