Nice Filter!
On Thursday, September 13, 2018 at 3:18:12 AM UTC+10, Mark S. wrote:
>
> It sounds like you have things mostly sorted out.
>
> A filter like this might allow you to sort by caption or title (whichever
> is present):
>
> [has[caption]get[caption]] [!has[caption]get[title]] +[sort[]]
>
> Just remember, that if you use caption then there might be more than one
> tiddler that uses that caption and you can't form a standard link based on
> the caption name.
>
> Good luck!
> -- Mark
>
> On Tuesday, September 11, 2018 at 6:31:21 PM UTC-7, S H Chang wrote:
>>
>> I should have scrutinised my code before posting here. There was a
>> mistake in <<toc-linked-selective-single-expandable-body>>; it didn't have
>> the list for "empty" children. I've also realised that it should be
>> !tag[Log]!visibility[hidden] instead. I've added that to the macro so now
>> it looks like this:
>>
>> \define toc-linked-selective-single-expandable-body(tag,sort:"",
>> itemClassFilter:" ",exclude,path)
>> <$set name="toc-state" value=<<qualify """$:/state/toc/$tag$""">>>
>> <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue=
>> "toc-item" value="toc-item-selected" >
>> <li class=<<toc-item-class>>>
>> <$link>
>> <$list filter=
>> "[all[current]tagging[]!visibility[hidden]!tag[Log]limit[1]]" variable=
>> "ignore" emptyMessage="<$button
>> class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
>> <$reveal type="nomatch" state=<<toc-state>> text=<<
>> currentTiddler>>>
>> <$button set=<<toc-state>> setTo=<<currentTiddler>>
>> class="tc-btn-invisible
>> tc-popup-keep">
>> {{$:/core/images/right-arrow}}
>> </$button>
>> </$reveal>
>> <$reveal type="match" state=<<toc-state>> text=<<currentTiddler
>> >>>
>> <$button set=<<toc-state>> setTo="x-all-close"
>> class="tc-btn-invisible
>> tc-popup-keep">
>> {{$:/core/images/down-arrow}}
>> </$button>
>> </$reveal>
>> </$list>
>> <<toc-caption>>
>> </$link>
>> <$reveal type="match" state=<<toc-state>> text=<<currentTiddler>>>
>> <$macrocall $name="toc-selective-single-expandable" tag=<<
>> currentTiddler>> sort="""$sort$""" itemClassFilter=
>> """$itemClassFilter$""" exclude="""$exclude$""" path="""$path$"""/>
>> </$reveal>
>> </li>
>> </$set>
>> </$set>
>> \end
>>
>> \define toc-unlinked-selective-single-expandable-body(tag,sort:"",
>> itemClassFilter:" ",exclude,path)
>> <$set name="toc-state" value=<<qualify """$:/state/toc/$tag$""">>>
>> <$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue=
>> "toc-item" value="toc-item-selected">
>> <li class=<<toc-item-class>>>
>> <$list filter=
>> "[all[current]tagging[]!visibility[hidden]!tag[Log]limit[1]]" variable=
>> "ignore" emptyMessage="<$button
>> class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view
>> field='caption'><$view field='title'/></$view>">
>> <$reveal type="nomatch" state=<<toc-state>> text=<<currentTiddler
>> >>>
>> <$button set=<<toc-state>> setTo=<<currentTiddler>>
>> class="tc-btn-invisible
>> tc-popup-keep">
>> {{$:/core/images/right-arrow}}
>> <<toc-caption>>
>> </$button>
>> </$reveal>
>> <$reveal type="match" state=<<toc-state>> text=<<currentTiddler
>> >>>
>> <$button set=<<toc-state>> setTo="close" class="tc-btn-invisible
>> tc-popup-keep">
>> {{$:/core/images/down-arrow}}
>> <<toc-caption>>
>> </$button>
>> </$reveal>
>> </$list>
>> <$reveal type="match" state=<<toc-state>> text=<<currentTiddler>>>
>> <$macrocall $name="""toc-selective-single-expandable"""
>> tag=<<currentTiddler>> sort="""$sort$"""
>> itemClassFilter="""$itemClassFilter$""" exclude="""$exclude$"""
>> path="""$path$"""/>
>> </$reveal>
>> </li>
>> </$set>
>> </$set>
>> \end
>>
>> \define toc-selective-single-expandable-empty-message()
>> <<toc-linked-selective-single-expandable-body tag:"""$(tag)$""" sort:
>> """$(sort)$""" itemClassFilter:"""$(itemClassFilter)$""" exclude:
>> """$(excluded)$""" path:"""$(path)$""">>
>> \end
>>
>> \define toc-selective-single-expandable(tag,sort:"",itemClassFilter,
>> exclude,path)
>> <$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter=
>> """$itemClassFilter$""" excluded="""$exclude$ -[[$tag$]]""" path=
>> """$path$/$tag$""">
>> <ol class="tc-toc toc-selective-expandable">
>> <$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]
>> -[[$tag$]] $exclude$""">
>> <$list filter="[all[current]toc-link[no]]" variable="ignore"
>> emptyMessage=<<toc-selective-single-expandable-empty-message>> >
>> <$macrocall $name=toc-unlinked-selective-expandable-body tag=
>> """$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""
>> exclude=<<excluded>> path=<<path>> >
>> </$list>
>> </$list>
>> </ol>
>> </$vars>
>> \end
>>
>> Hopefully it might help someone out in future.
>>
>> As for the second question I have, I suppose it's not possible. What I
>> had in mind when I posted was that the toc would sort alphabetically, but
>> it would use the caption's value if there were one, else the title. I've
>> decided to just use the list field for all the parents.
>>
>
--
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 [email protected].
To post to this group, send email to [email protected].
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/648e234e-3d61-404a-a35d-6e8c3f6ce5a6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.