Hi Mark, Many thanks for your comments. For now, I use your solution with Mario keyvalues (https://wikilabs.github.io/editions/keyvalues/) to sort key:values. Unfortunately it seems the values filter operator has little chance to be merged ()
I personally do not like to include JS in my solution, but for it seems there is no better solution. @stobot In my opinion, data tiddler / JSON tiddler are quite handy elements, but it seems there is little or no desire to improve their functionality in the core. I believe some basic features like what Mario has proposed are really useful. Best wishes Mohammad On Fri, Feb 19, 2021 at 6:31 PM 'Mark S.' via TiddlyWiki < tiddlywiki@googlegroups.com> wrote: > Hi Mohammad, > > Whatever process you use to make the data tiddler needs to escape the > colon's. Like replace ":" with __SEPARATOR__ . And then the code above > would replace __SEPARATOR__ with ":" in the report. > > Yes, JSON fixes some problems. But it is not-human readable without a lot > of formatting, and it is very unforgiving. Like a single comma at the end > of an array sequence will throw an error. This makes it difficult to > quickly edit JSON by hand, since you have to go comma-wrangling every time. > > On Thursday, February 18, 2021 at 9:30:33 PM UTC-8 Mohammad wrote: > >> 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 < >> tiddl...@googlegroups.com> 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 < >>>> mohammad...@gmail.com> 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 tiddlywiki+...@googlegroups.com. >>> 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 tiddlywiki+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/tiddlywiki/64429d00-315f-4240-a099-88e533db0764n%40googlegroups.com > <https://groups.google.com/d/msgid/tiddlywiki/64429d00-315f-4240-a099-88e533db0764n%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 tiddlywiki+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/CAAV1gMD3_DWsJQ3d-q7XWDLi_rU_9sv8ULYYDZ8SsHhNzRGdzA%40mail.gmail.com.