I’ve now implemented a new “subsort” filter that takes a subfilter and sorts the incoming titles by the result of running that filter on each one in turn:
https://github.com/Jermolene/TiddlyWiki5/commit/619c0752bd3c6e71d1fcdb74daa03cfe8257afe4 The OP should be achievable using a subfilter such as: [{!!value}divide{!!time}] With that filter in a variable called “cost” it could be used like this: [tag[tas]subsort:number<cost>] The new operator will be available on https://tiddlywiki.com/prelease <https://tiddlywiki.com/prelease> in a few minutes (you can check on build progress here: https://travis-ci.org/github/Jermolene/TiddlyWiki5/builds <https://travis-ci.org/github/Jermolene/TiddlyWiki5/builds>) Best wishes Jeremy > On 23 Apr 2020, at 16:46, si <[email protected]> wrote: > > > Thank you so much Eric you have saved me yet again! I really appreciate you > taking the time to help me out. > > On Wednesday, 22 April 2020 23:22:31 UTC+1, Eric Shulman wrote: > On Wednesday, April 22, 2020 at 11:30:41 AM UTC-7, si wrote: > Hi everyone. > I'm trying to implement a particular type of task list using plain wikitext. > I stole the idea from supermemo <https://supermemo.guru/wiki/Tasklist>. > Each of my tasks is tagged task, and has the fields time and value. These > fields represent the estimated time a task will take and the perceived value > of a task respectively. > I'm trying to generate a task list that is sorted by the result of value > divided by time for each task. > I thought this would be able to do this easily, then tried it and realised I > couldn't. Can anyone help me out here? > > I did something similar to create a "tag cloud", where the tags are sorted by > the number of tiddlers they are tagging. > See > http://tiddlytools.com/filtergenerators.html#TiddlyTools%2FFilterGenerators%2FTagCloud > > <http://tiddlytools.com/filtergenerators.html#TiddlyTools%2FFilterGenerators%2FTagCloud> > > For your purposes, the code is actually quite a bit simpler than the > TagCloud. This should do the job: > \define getitems() > <$list filter="[tag[task]]"> > <$vars time={{!!time}} value={{!!value}}> > <$text text="[["/>{{{ [<value>divide<time>divide[10000]] > }}};<<currentTiddler>><$text text="]]"/> > </$vars> > </$list> > \end > > <$wikify name="items" text=<<getitems>> > > <$list filter="[enlist<items>nsort[]]"> > {{{ [<currentTiddler>split[;]last[]] }}}<br> > </$list> > </$wikify> > > The <<getitems>> macro: > * gets all tiddlers tagged with "task" > * calculates the "value/time" number for each and divides it by 10000 to > ensure that all numbers are zero-padded for proper sorting (so a value, e.g., > "15" is not sorted between "1" and "2") > * prepends that calculated value in front of each task title, separated by a > semi-colon (;) and surrounded by double square brackets to handle titles with > spaces > > The calling code: > * Uses $wikify to capture the output of <<getitems>> into a variable, "items" > * The $list widget then enlists the items and sorts them numerically > * The output then strips off the calculated number and the semi-colon > separator and displays the tiddler titles in the sorted order > > Let me know how it goes... > > enjoy, > -e > > > > -- > 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] > <mailto:[email protected]>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/tiddlywiki/37d4d40b-ce4f-44ad-b2a0-8a4217ebf502%40googlegroups.com > > <https://groups.google.com/d/msgid/tiddlywiki/37d4d40b-ce4f-44ad-b2a0-8a4217ebf502%40googlegroups.com?utm_medium=email&utm_source=footer>. -- 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/E47BB011-58D5-4E8E-A480-175BEDD94F0A%40gmail.com.

