Oops;

I must add
the tab template contains

<$tiddler tiddler=<<currentTab>>>
<$transclude mode="block" />
</$tiddler>

and each tab contains 
<$list filter={{!!filter}}>

</$list>

The tabs work stand alone

Tones

On Wednesday, 21 July 2021 at 23:55:11 UTC+10 TW Tones wrote:

> Soren,
>
> Given this thread, I am not sure if I am on track here, but reading your 
> Original post it seems so.
>
> As I understand it you want to use a filter in a tab tiddler to determine 
> if it should have the tab displayed.
>
> The thing is the tabs macro is not designed for conditional tab display, 
> it simply wants a list of tiddlers. If this could all be rammed into a 
> single filter then all would be fine. However you not only want to make use 
> of another variable or in this case a field but that field contains a 
> filter. This is asking too much of the filter syntax.
>
> What I have done in my solution was to generate the list of tiddlers that 
> would be tabs according to you conditions and feed only the result to the 
> tabs macro.
>
>    - In my small test not performance issues, and I do not expect their 
>    to be
>    - I think what is happening in your case if the reduce etc... is 
>    adding unnecessary complexity to the performance of the tabs macro.
>
>
> Here is the core logic tested on tiddlywiki.com and pre-release 
> incidentally.
>
> \define tabs-with-content()
> <$list filter="[tag[Tag]]" >
>    <$list filter="[all[current]get[filter]]" variable=found-filter>
>       <$list 
> filter="[subfilter<found-filter>count[]!match[0]then<currentTiddler>]">
>
>        </$list>
>    </$list>
> </$list>
> \end
>
> <$wikify name=tabs-with-content text="<<tabs-with-content>>">
> <$macrocall $name=tabs tabsList=<<tabs-with-content>> 
> template="tabtemplate"/>
> </$wikify>
>
> If this does not make sense I will package the tiddlers in this test for 
> you.
>
> The above example may be a good test case if we wanted to invent a method 
> to make filters more sophisticated basically permit ones that allow you to 
> avoid the nested lists I used, however as stated previously dont be shy 
> using nested lists, because each level of nesting allows to generate a new 
> variable and keep the old ones in this case found-filter while keeping 
> currentTiddler from the first filter.
>
> My preference would be a shorthand method when presenting variables as a 
> parameter, in this case <<tabs-with-content>> such that it is first 
> wikified rather than using the ungainly wikify widget and its need to wrap 
> the macro call. Eg a a parameter ((tabs-with-content)) or in filters 
> (tabs-with-content)
> Alternatively TiddlyWiki would detect the need for wikification of that 
> variable/macro and do it itself.
>
>
> Regards
> tones
>
>
> On Wednesday, 21 July 2021 at 22:15:12 UTC+10 Soren Bjornstad wrote:
>
>> Saq, the intermittent refresh every 5 seconds updates a clock and 
>> Pomodoro timer. The reason it's puzzling is that it doesn't appear by 
>> default in the public edition. If you're curious, tick the "clock" checkbox 
>> in the FeatureFlags tiddler.
>>
>> I'll give the :filter version a try later. I suspect I didn't think to 
>> use filter and subfilter together in one run!
>>
>> On Wednesday, July 21, 2021 at 5:57:42 AM UTC-5 [email protected] wrote:
>>
>>> Hi Soren, glad that was helpful. When I worked on performance 
>>> improvements for Streams a few months ago, the biggest gains were from 
>>> simplifying the widget and DOM structure, and replacing macros with 
>>> transclusions, rather than from optimizing filters.
>>>
>>> I took a brief look at your wiki just now and the one odd thing I see is 
>>> that there seems to be an intermittent refresh being triggered every few 
>>> seconds. Any idea what that is about? To see what I mean, create a new 
>>> tiddler with the following in the text and then observe the developer 
>>> console:
>>> <$log t=<<currentTiddler>>/>
>>>
>>> This should work on the current pre-release but probably isn't any 
>>> faster:
>>> [tag[$:/sib/refexplorer/tabs]] :filter[subfilter{!!condition}] +[join[ ]]
>>>
>>> I suspect that any real gains would come from optimizing the condition 
>>> filters, as they likely make up the bulk of the time needed for the above 
>>> filter expression. For filter operators that are indexed, the first time 
>>> they run they will take a while but subsequent runs should be faster. 
>>> https://tiddlywiki.com/#Performance
>>>
>>> On Wednesday, July 21, 2021 at 4:20:13 AM UTC+2 Soren Bjornstad wrote:
>>>
>>>> Thanks Saq, that view is super useful and I never knew it existed!
>>>>
>>>> Armed with that information, I spent most of this evening tinkering on 
>>>> improving some of the other things that have been slowing my wiki down, 
>>>> including adding an Idea tag so I don't have to define it as the negation 
>>>> of a dozen other tags and replacing TiddlyTables with a similar HTML table 
>>>> that needs fewer filters, macros, and transclusions in the most critical 
>>>> paths. (More work needs to be done to bring the rest of the Reference 
>>>> Explorer in line and refactor it to catch it up with a bunch of other 
>>>> changes I've made recently.)
>>>>
>>>> The tabs filter discussed above was and remains the #1 contributor to 
>>>> filter processing time when clicking around the wiki, often something like 
>>>> 30% of the total time, so I'm still interested in suggestions others may 
>>>> have for improving that. I didn't want to publish the wiki in its present 
>>>> state previously since it was so slow it would be difficult for people to 
>>>> use, but I've ameliorated that enough that I am now comfortable 
>>>> republishing it. As mentioned in my previous post, you can start looking 
>>>> at 
>>>> $:/sib/refexplorer/ReferenceExplorer, but now it is a working example 
>>>> rather than something you would have to tweak into a working example by 
>>>> yourself.
>>>>
>>>> On Tuesday, July 20, 2021 at 9:29:49 AM UTC-5 [email protected] wrote:
>>>>
>>>>> @Soren I recommend enabling performance instrumentation and checking 
>>>>> to see which filter runs are the culprits.
>>>>>
>>>>>
>>>>> https://tiddlywiki.com/#%24%3A%2Fconfig%2FPerformance%2FInstrumentation:%24%3A%2Fconfig%2FPerformance%2FInstrumentation%20%5B%5BPerformance%20Instrumentation%5D%5D
>>>>>
>>>>> Note that you need to enable it by setting the config tiddler to 
>>>>> "yes", then save and reload.
>>>>>
>>>>> Also suggest posting a public wiki where the issue (and the condition 
>>>>> filters) can be seen to facilitate debugging.
>>>>> On Tuesday, July 20, 2021 at 4:05:15 PM UTC+2 Soren Bjornstad wrote:
>>>>>
>>>>>> Important note, the condition fields aren't defined in the current 
>>>>>> public version, so you'd have to add them in to get a working test.
>>>>>>
>>>>>> On Tuesday, July 20, 2021 at 9:03:42 AM UTC-5 Soren Bjornstad wrote:
>>>>>>
>>>>>>> Tones,
>>>>>>>
>>>>>>> :filter was my first thought, but I couldn't figure out how the data 
>>>>>>> would flow through it. Perhaps I was missing something, looking forward 
>>>>>>> to 
>>>>>>> seeing your version.
>>>>>>>
>>>>>>> If it helps to see the context, have a peek at 
>>>>>>> https://zettelkasten.sorenbjornstad.com/#%24%3A%2Fsib%2Frefexplorer%2FReferenceExplorer.
>>>>>>>  
>>>>>>> The snippet above (or a replacement) would go inside the ref-explorer 
>>>>>>> macro 
>>>>>>> definition.
>>>>>>>
>>>>>>>
>>>>>>> On Tuesday, July 20, 2021 at 8:07:09 AM UTC-5 TW Tones wrote:
>>>>>>>
>>>>>>>> Soren,
>>>>>>>>
>>>>>>>> Its late here but I have done something similar in the past without 
>>>>>>>> a performance hit, and will try and create a solution tomorrow, 
>>>>>>>> However I 
>>>>>>>> think the answer best answer may be through the use of a filter run as 
>>>>>>>> in 
>>>>>>>> 5.3.23+ however I am sure I succeeded in something similar a few 
>>>>>>>> versions 
>>>>>>>> ago.
>>>>>>>>
>>>>>>>> No need for reduce and accumulators I think.
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> Tones
>>>>>>>>
>>>>>>>> On Tuesday, 20 July 2021 at 13:09:18 UTC+10 Soren Bjornstad wrote:
>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> I want to determine what tabs of the Reference Explorer in my 
>>>>>>>>> Zettelkasten to show on a template, such that if there aren't any 
>>>>>>>>> results 
>>>>>>>>> on that tab, the tab doesn't appear at all. The results of the tab 
>>>>>>>>> are 
>>>>>>>>> produced based on a filter (of course), so I figured I would also 
>>>>>>>>> determine 
>>>>>>>>> whether the tab appears by running a filter. The filter is stored in 
>>>>>>>>> a 
>>>>>>>>> field in the tab tiddler.
>>>>>>>>>
>>>>>>>>> That is, I have a series of tiddlers with a certain tag (say *Tab*), 
>>>>>>>>> and each of these tiddlers contains a filter in some field (say 
>>>>>>>>> *condition*). For each Tiddler tagged Tab, if and only if the 
>>>>>>>>> filter Tiddler!!condition, run with the current tiddler as input, has 
>>>>>>>>> more 
>>>>>>>>> than zero results, I want to display the tab.
>>>>>>>>>
>>>>>>>>> I came up with the following:
>>>>>>>>>
>>>>>>>>> <$set name="tabList" value={{{ [tag[Tab]] 
>>>>>>>>> :reduce[<storyTiddler>subfilter{!!condition}then<currentTiddler>addprefix[
>>>>>>>>>  
>>>>>>>>> ]addprefix<accumulator>] }}}>
>>>>>>>>>     <$macrocall $name="tabs" tabsList=<<tabList>>/>
>>>>>>>>> </$set>
>>>>>>>>>
>>>>>>>>> This produces the correct result (well, as long as there are no 
>>>>>>>>> spaces in the titles of the tiddlers tagged *Tab*; I'm OK 
>>>>>>>>> assuming that since there indeed aren't any). The problem is that it 
>>>>>>>>> is 
>>>>>>>>> horrendously slow to run all these filters. On my dev machine it is 
>>>>>>>>> tolerable, but this is a machine specced for serious processing 
>>>>>>>>> power. On 
>>>>>>>>> my MacBook Air it now takes 1–2 seconds to open a new tiddler, even 
>>>>>>>>> without 
>>>>>>>>> anything currently open!
>>>>>>>>>
>>>>>>>>> Probably I am just asking TW to do too much on the fly here, but 
>>>>>>>>> before I start rethinking the project too hard, can anyone think of 
>>>>>>>>> obvious 
>>>>>>>>> optimizations I might be missing here? The filters involved are 
>>>>>>>>> moderately 
>>>>>>>>> complex (the basic pattern for each is to gather together links[], 
>>>>>>>>> backlinks[], and tagging[] for the story tiddler, then filter some 
>>>>>>>>> things 
>>>>>>>>> out of that using + and !*operator*[]'s).
>>>>>>>>>
>>>>>>>>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/d6e765e3-263d-46b0-90c5-d3730fb29facn%40googlegroups.com.

Reply via email to