Ok, this way may be more elegant, if you don't mind your text replaced by a 
message:


<$list filter="[{$:/state/table}minlength[1]]" emptyMessage="<br/><b>Search 
string too short</b><br/>">
<$reveal state="$:/state/table!!selection" type="match" text="auctor">
   <br><br>
      <$set name="data" value="$:/_dictionary/auctor">
Searching for: ::<<searchme>>::<br/>
      <$list filter="[<data>indexes[]search{$:/state/table}sort[title]]">
      ;{{!!title}}
      :<$transclude tiddler=<<data>> index=<<currentTiddler>>/>
      </$list>
</$set>
</$reveal>
</$list>

It basically won't let results be shown unless the input field has 1 or 
more characters.

HTH
-- Mark

On Sunday, September 16, 2018 at 8:55:05 PM UTC-7, Mark S. wrote:
>
> It appears that the [{$:/state/table}]  returns an invisible "something" 
> that the filter sees as "non-empty". This makes my solution rather 
> convoluted. For the 2nd part I came up with:
>
> <$set filter="[{$:/state/table}addprefix[X]addsuffix[X]!prefix[XX]] 
> [title[XEMPTYX]] OTHER +[nth[1]removeprefix[X]removesuffix[X]]" 
> name="searchme"  >
> <$reveal state="$:/state/table!!selection" type="match" text="auctor">
>    <br><br>
>       <$set name="data" value="$:/_dictionary/auctor">
> Searching for: ::<<searchme>>::<br/>
>       <$list filter="[<data>indexes[]prefix<searchme>sort[title]]">
>       ;{{!!title}}
>       :<$transclude tiddler=<<data>> index=<<currentTiddler>>/>
>       </$list>
>       </$set>
> </$reveal>
> </$set>
>
> Note that the set widget uses a filter to take the input field, append and 
> prepend "X", and then prevent the result if it matches "XX". If it doesn't 
> match, a title XEMPTYX is created, and then stripped of the X's to make 
> "EMPTY". Assuming that none of your indexes match "EMPTY", this should 
> work. Change X to something else if it's too common for you. Likewise the 
> word "EMPTY" if you want something even less likely to appear.  I just 
> needed it to use clear text for my testing.
>
> HTH
> -- Mark
>
> On Saturday, September 15, 2018 at 5:13:20 PM UTC-7, Magnus wrote:
>>
>> Hi, I'm trying to make a custom search from two data-tiddlers. I want to 
>> limit the search and only show the results that match the search field but 
>> can't make it work. Any help appreciated :)
>> /Magnus
>>
>> <table>
>>   <tr>
>>     <td>Limit to: <$edit-text tiddler="$:/state/table" tag="input" 
>> default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
>>     </td>
>>   </tr>
>>   <tr>
>>     <td><$radio  tiddler="$:/state/table" field="selection" 
>> value="abbreviations"> Abbreviations</$radio>
>> <$radio  tiddler="$:/state/table" field="selection" value="auctor"> 
>> Auctor</$radio>
>>
>> <$reveal state="$:/state/table!!selection" type="match" 
>> text="abbreviations">
>>    <br><br>
>>     <table class="nolines">
>>           <$list filter="[[$:/_dictionary/abbreviation]] 
>> [[$:/_dictionary/pronunciation]] +[indexes[]]">
>>       <tr>
>>           <td><<currentTiddler>></td>
>>           <td><$view tiddler="$:/_dictionary/abbreviation" 
>> index=<<currentTiddler>>/></td>
>>           <td><$view tiddler="$:/_dictionary/pronunciation" 
>> index=<<currentTiddler>>/></td>
>>         </tr>
>>         </$list>
>>       </table>
>> </$reveal>
>> <$reveal state="$:/state/table!!selection" type="match" text="auctor">
>>    <br><br>
>>       <$set name="data" value="$:/_dictionary/auctor">
>>       <$list filter="[<data>indexes[]sort[title]]">
>>
>>       ;{{!!title}}
>>       :<$transclude tiddler=<<data>> index=<<currentTiddler>>/>
>>       </$list>
>>       </$set>
>> </$reveal>
>>     </td>
>>   </tr>
>> </table>
>>
>

-- 
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 post to this group, send email to [email protected].
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/bbccc7de-0d0d-4c57-bcfc-03e23fe8ac1e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to