Hi Mark,
 Using your solution on 2000 entries, TW shows good performance while using
my solution TW freezes. So I like to use it, but there is a small issue

1. the data tiddler itself is populated from tiddlers in Tiddlywiki, so I
may have entries like below
index=  My Tiddler: New Tid
value= -12

Tiddlywiki uses JSON instead of data tiddler to address above issue

So what do you think





Best wishes
Mohammad


On Thu, Feb 18, 2021 at 11:45 PM 'Mark S.' via TiddlyWiki <
[email protected]> wrote:

> 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
> <https://groups.google.com/d/msgid/tiddlywiki/4f98a1bc-c408-4b6d-b89d-d4eebcb9561fn%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/CAAV1gMBt%3Dm_008d1yJE10c0VYC%2B50J-LxQEDR63MY4NJ4Qf1xA%40mail.gmail.com.

Reply via email to