Hi Mark,

Thanks for that follow-up!  I'm beginning to see (thanks to you and Mario) 
how this works.

OK, so I now get how you can negate the sort order inside the macro (with a 
bang).  And then I see from the docs that the way that expression evaluates 
is L-to-R via that "railroad" style filter syntax 
<http://tiddlywiki.com/#Filter%20Expression>.

And now I see how you can't get to the juicy inner goodness unless you 
explicitly flip that bang in the middle...

...which bothered me.  So I extended your initial idea to allow an 
additional parameterization from outside:

\define timeline2(limit:"100",format:"DDth  MMM 
YYYY",subfilter:"",sortaction"sort",dateField:"modified")
<div class="tc-timeline">
<$list 
filter="[!is[system]$subfilter$has[$dateField$]$sortaction$[$dateField$]limit[$limit$]eachday[$dateField$]]">

[...]

<$macrocall $name="timeline2" subfilter="" 
format={{$:/language/RecentChanges/DateFormat}} sortaction="sort" 
dateField="created"/>

And so, I can make a call using a sortaction of "sort" or "!sort", and 
control it from outside.  Which works.  And taught me a lot, so thanks to 
you & Mario for investing your time explaining that to me.

Finally. some observations and questions for you veterans (keeping in mind 
that I'm not at all familiar with the code base yet):

   - Keep in mind I'm not a "macro-ey" kinda guy.  I'm more of 
   "function-ey" or "object/method-ey" dude, so I'm sure you should take this 
   with a bowling ball sized grain of salf... 
   - It kind of "bothered" me that the declaration "looks" like it has a 
   "default parameterization", but does not really.  In other words, when you 
   call the macro, if you don't explicitly supply all parameters, it will 
   fail.  That seems a bit fragile, right?
   - Death by whitespace:  I found out if there's any leading whitespace 
   (before the macro definition) the tiddler fails.  Also, if there's any 
   whitespace in the filter list, it will fail.  Again, trying not to seem 
   harsh, but it feels rather fragile.  Am I being unfair?
   - Is this "macro-ey" stuff kind of like the STL in C++?
   - Is this "fragility" due to the macro mechanism itself?  Or is it a 
   characteristic of JavaScript?  Or CSS?  Or HTML?  Or some intersection of 
   those elements?
   

And, again, most of all... THANKS for your explanations, which have been 
very useful in helping me to spin up on the awesomeness that is TiddlyWiki!



On Thursday, February 23, 2017 at 5:42:43 PM UTC-8, Mark S. wrote:
>
> Hi Daniel,
>
> Mario's syntax uses the macrocall widget, which is a somewhat more formal 
> way of calling a macro that works better in some situations.
>
> The problem with the timeline macro is that it doesn't give you access to 
> the sorting order (A/D), as you can see in this filter:
>
> [!is[system]$subfilter$has[$dateField$]*!**sort*[$dateField$]limit[$limit$
> ]eachday[$dateField$]]
>
> You can't reach the *!sort* in the macro invocation. You can try putting 
> the following into a tiddler, which is modified from the original timeline 
> code:
>
> \define timeline2(limit:"100",format:"DDth MMM YYYY",subfilter:"",
> dateField:"modified")
> <div class="tc-timeline">
> <$list filter=
> "[!is[system]$subfilter$has[$dateField$]sort[$dateField$]limit[$limit$]eachday[$dateField$]]"
> >
> <div class="tc-menu-list-item">
> <$view field="$dateField$" format="date" template="$format$"/>
> <$list filter=
> "[sameday:$dateField${!!$dateField$}!is[system]$subfilter$sort[$dateField$]]"
> >
> <div class="tc-menu-list-subitem">
> <$link to={{!!title}}>
> <<timeline-title>>
> </$link>
> </div>
> </$list>
> </div>
> </$list>
> </div>
> \end
> <$macrocall $name="timeline2" subfilter="" format={{$:/language/
> RecentChanges/DateFormat}} dateField="created"/>
>
> It seemed to work in my quick test, though I didn't look at dates too 
> closely. 
>
> Good luck!
> Mark
>
>
> On Thursday, February 23, 2017 at 4:12:26 PM UTC-8, Daniel Cunningham 
> wrote:
>>
>> Many thanks, Mario!  I tried that, and it works.  
>>
>> But rather than change a shadow tiddler, I elected to put in into a 
>> "end-user" tiddler, that I can then place in the sidebar with a 
>> "$:tags/SideBar" tag.  That gives me the functionality I was looking for.  
>> Also, I won't shoot myself in the foot if core changes during my "learning 
>> curve".  :-)
>>
>> As a follow-up, the results are still in descending order (same as the 
>> original Recent tab functionality).  So, to get ascending order, I recon I 
>> should apply a sort operator to the results of your code segment.  But the 
>> syntax of your code is very different than that shown in the docs -- can 
>> you give guidance on this?
>>
>> Best,
>>
>> -- Daniel
>>
>>
>> On Wednesday, February 22, 2017 at 4:22:50 PM UTC-8, PMario wrote:
>>>
>>> On Wednesday, February 22, 2017 at 11:48:49 PM UTC+1, Daniel Cunningham 
>>> wrote:
>>>>
>>>> And then what you are saying is that since this is embedded in the 
>>>> timeline macro, any sort criteria I try to apply to "created" will be to 
>>>> no 
>>>> avail?
>>>>
>>>
>>> Have a look at the docs: http://tiddlywiki.com/#timeline%20Macro
>>>  
>>>
>>>>
>>>> Unless... I clone the macro & modfify it to use the "created" field?
>>>>
>>>
>>> Edit: $:/core/ui/SideBar/Recent 
>>> <http://tiddlywiki.com/#%24%3A%2Fcore%2Fui%2FSideBar%2FRecent>
>>>
>>> like so: <$macrocall $name="timeline" 
>>> format={{$:/language/RecentChanges/DateFormat}} dateField="created"/>
>>>
>>> and you should be good to go. 
>>>
>>> have fun!
>>> mario
>>>
>>>

-- 
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/ddd752f6-ca21-4e7c-a7e7-625165af0251%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to