Remember that in TW, the data dictionary is just a convenience tool. So it's ok to cheat. Or at least that's my theory.
<$vars cr=""" """ sortby="[split[:]nth[2]]" > <$list filter="[[MyData]get[text]split<cr>sortsub:number<sortby>]" > </$list> </$vars> Gives lola: -7 <https://tiddlywiki.com/#lola%3A%20-7> fifa: -2 <https://tiddlywiki.com/#fifa%3A%20-2> nella: -1 <https://tiddlywiki.com/#nella%3A%20-1> villa: 0 <https://tiddlywiki.com/#villa%3A%200> rita: 1 <https://tiddlywiki.com/#rita%3A%201> afra: 1 <https://tiddlywiki.com/#afra%3A%201> cobra: 2 <https://tiddlywiki.com/#cobra%3A%202> sina: 3 <https://tiddlywiki.com/#sina%3A%203> zila: 3 <https://tiddlywiki.com/#zila%3A%203> On Thursday, February 18, 2021 at 11:30:23 AM UTC-8 Mohammad wrote: > when using nsort on new values (e.g. value::index note :: is a character > used to create new entries) it fails. > One solution is as below, but for large number index - value (e.g 200 or > more) the solution is very slow > > This solution contains > > 1. a populate macro to list all values > 2. a wikify and list widget let sort values > 3. a lookup macro to find index(s) for a value > > \define dataTiddler() myData > \define myfilter() [<dataTiddler>indexes[]] > > \define populate() > <$list filter="[subfilter<myfilter>]"> > <$text text={{{[<dataTiddler>getindex<currentTiddler>]}}}/> > </$list> > \end > > \define lookup-index(val) > <$list filter="[subfilter<myfilter>]" variable=idx> > <$list filter="[<dataTiddler>getindex<idx>] +[match[$val$]]"> > <tr> > <td><$link to=<<idx>> /></td><td> $val$ </td> > </tr> > </$list> > </$list> > \end > > > <table> > <$wikify name=u text=<<populate>> > > <$list filter="[enlist<u>nsort[]]"> > <$macrocall $name=lookup-index val=<<currentTiddler>> /> > </$list> > </$wikify> > </table> > > > The above can be tested in https://tiddlywiki.com/ if one creates a data > tiddler with the myData title containing the data of the previous post. > > Question: as stated above this solution is very slow for large numbers of > data (index-value pairs). What alternative solution do you propose? > > Best wishes > Mohammad > > > On Thu, Feb 18, 2021 at 10:07 PM Mohammad Rahmani <[email protected]> > wrote: > >> This is an old question and there are several solution for that, but not >> for the case I explain here >> >> Assume you have a dataTiddler or JSON tiddler with data like below >> >> nella: -1 >> rita: 1 >> villa: 0 >> lola: -7 >> sina: 3 >> cobra: 2 >> fifa: -2 >> zila: 3 >> afra: 1 >> >> >> I want to list data in this dictionary table sorted by value, so I should >> have >> >> lola: -7 >> fifa: -2 >> nella: -1 >> villa: 0 >> afra: 1 >> rita: 1 >> cobra: 2 >> sina: 3 >> zila: 3 >> >> Note, there are duplicated values. The solution is that new entries >> created from appending value to index like value::index do not work here! >> As you need to use nsort >> >> >> >> Best wishes >> Mohammad >> > -- 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/4f98a1bc-c408-4b6d-b89d-d4eebcb9561fn%40googlegroups.com.

