Bob,

I had a quick look, I am busy this morning

The only issue I detected so far is in the debug view onscreen I see the 
value had leading spaces, I corrected this with the trim[] at the end of 
the filters in the actions widgets for example

{{{ [{!!exhibition_id}addsuffix[ ]addsuffix{$:/TLS/exhibition_id}trim[]] }}}

I can look later in the day, but do share a supposed to work and a debug 
view if possible.

Tones

On Wednesday, 7 October 2020 08:03:38 UTC+11, Bob Jansen wrote:
>
> Hi Brains Trust, I need your combined knowledge.
>
> I have uploaded a copy of my TW to http://cultconv.com/TLSConsignment.html
>
> I have implemented Joshua's suggestions, from above, in the tiddler, Link 
> artworks to exhibition Joshua. I have added two action-log messages to 
> trace processing.
>
> Artworks marked are TK17, TK18 and TK19.
>
> If I select TK15 from the popup list, $:/TLS/exhibition_id tiddler is set 
> to TK15
>
> Now, on clicking the button to start the process, the dev console shows 
> the following trace:
>
> artwork_id TK17
> exhibition_id TK19
> artwork_id TK18
> exhibition_id TK19
> artwork_id TK19
> exhibition_id TK19
>
> Nowhere is TK15 displayed
>
> TK15 has its artwork_id set to TK19 and only TK19, no TK17 nor TK18.
>
> Can anyone explain this?
>
> bobj
>
> On Tuesday, 6 October 2020 at 15:34:43 UTC+11 Bob Jansen wrote:
>
>> Joshua,
>>
>> just tried your suggestion. MIxed result.
>>
>> The test was:
>>
>> artworks marked TK17 and TK19
>> exhibition selected TK21
>>
>> The first action-listops worked as the action-setfield did before, TK21 
>> added to the exhibition_id field of both TK17 and TK19. 
>>
>> The second action-listops worked better, only one instance of TK19 added 
>> to the artwork_id of TK21 but TK17 missing. I my code, I would have seen 
>> two TK19's in the field so the action-listops means I don't need the 
>> 'contains' list operator.
>>
>> $:/TLS/artwork_id is set to TK19 but maybe the second action-listops is 
>> not being performed until both artwork tiddlers have been processed through 
>> the first action-listops.
>>
>> Still onward and upward.
>>
>> bobj
>>
>>
>> On Tuesday, 6 October 2020 10:26:49 UTC+11, Joshua Fontany wrote:
>>>
>>> One problem here is that the code inside of the $button, including your 
>>> $action widgets, are parsed/rendered once when the Button itself is 
>>> displayed, and will not be updated as the underlying Wiki tiddlers change 
>>> (for example, once that Button is onscreen, changes to the list of Tagged 
>>> tiddlers will not be picked up).
>>>
>>> In order to work around this, it is recommended that you pass all 
>>> actions that need complex wikitext to a button as-a-macro-parameter to the 
>>> "actions" parameter. This causes the wikitext in the actions block to be 
>>> parsed and "rendered" at the time the button is clicked. Like so:
>>>
>>> \define buttonActions()
>>> <$list filter="[tag[Mark]]">
>>>      <!--add global exhibition_id to the exhibition_id list-field of 
>>> each marked artwork tiddler-->
>>>      <!--$listops $subfilter will append any new filter run to the 
>>> existing list-field-->
>>>            <$action-listops
>>>                $field="exhibition_id" 
>>>                $subfilter="[{$:/TLS/exhibition_id}]"
>>>           />
>>>    
>>>      <!--append each artwork_id to artwork_id list-field of the 
>>> exhibition tiddler-->
>>>           <$action-listops
>>>                $tiddler= {{{ [{$:/TLS/exhibition_id}] }}}
>>>                $field="artwork_id" 
>>>                $subfilter="[{$:/TLS/artwork_id}]"
>>>           />
>>>      
>>> </$list>
>>> \end
>>>
>>> <$button actions=<<buttonActions>> >
>>> Link Artworks to Exhibition
>>> </$button>
>>>
>>>
>>> Best,
>>> Joshua Fontany
>>>
>>> On Monday, October 5, 2020 at 12:10:48 AM UTC-7 TW Tones wrote:
>>>
>>>> Bob,
>>>>
>>>> I have not seen a fault yet, I will keep looking, however when adding 
>>>> items to a list consider using the ActionListops widget 
>>>> <https://tiddlywiki.com/#ActionListopsWidget>rather than adding 
>>>> suffixes. It has the advantage of not setting it twice etc...
>>>>
>>>> Your second attempt at the first action set field will store each 
>>>> tiddler tagged Mark in _null thus current tiddler will be the 
>>>> currentTiddler running when you click the button.
>>>>
>>>> When debugging buttons 
>>>>
>>>>    - you can make large buttons by displaying an intermediate result 
>>>>    as the button title to see the output.
>>>>    - Your can also make the same loop as just a list, and text what 
>>>>    your logic generated before you hide it with actions tiddlers when 
>>>> don't 
>>>>    themselves present output, just actions.
>>>>
>>>> <$list filter="[tag[Mark]]">
>>>>      <!--append exhibition_id to exhibition_id of each marked artwork 
>>>> tiddler-->
>>>>
>>>>      
>>>>            action-setfield 
>>>>                $field="exhibition_id" 
>>>>                $value={{{ [{!!exhibition_id}addsuffix[ 
>>>> ]addsuffix{$:/TLS/exhibition_id}] }}}
>>>>                `{{{ [{!!exhibition_id}addsuffix[ 
>>>> ]addsuffix{$:/TLS/exhibition_id}] }}}`
>>>>            
>>>>    
>>>>      <!--append each artwork_id to artwork_id of the exhibition 
>>>> tiddler-->
>>>>      
>>>>           action-setfield 
>>>>                $tiddler= {{{ [{$:/TLS/exhibition_id}] }}}
>>>>                $field="artwork_id" 
>>>>                $value={{{ [{$:/TLS/exhibition_id!!artwork_id}addsuffix[ 
>>>> ]addsuffix{$:/TLS/artwork_id}] }}}
>>>>                `{{{ [{$:/TLS/exhibition_id!!artwork_id}addsuffix[ 
>>>> ]addsuffix{$:/TLS/artwork_id}] }}}`
>>>>           
>>>>      
>>>> </$list>
>>>>
>>>> See how I replicated the tripl braces, keep both upto date as you test 
>>>> you outcomes
>>>>
>>>>    - I basically converted the otherwise actions into text and took it 
>>>>    outside of the button.
>>>>
>>>> Regards
>>>> Tony
>>>>
>>>> On Monday, 5 October 2020 17:05:50 UTC+11, Bob Jansen wrote:
>>>>>
>>>>> I am trying to implement a simple function in my TW.
>>>>>
>>>>> <code>
>>>>> <$button>
>>>>> <$list filter="[tag[Mark]]">
>>>>>      <!--append exhibition_id to exhibition_id of each marked artwork 
>>>>> tiddler-->
>>>>>      
>>>>>            <$action-setfield 
>>>>>                $field="exhibition_id" 
>>>>>                $value={{{ [{!!exhibition_id}addsuffix[ 
>>>>> ]addsuffix{$:/TLS/exhibition_id}] }}}
>>>>>           />
>>>>>    
>>>>>      <!--append each artwork_id to artwork_id of the exhibition 
>>>>> tiddler-->
>>>>>      
>>>>>           <$action-setfield 
>>>>>                $tiddler= {{{ [{$:/TLS/exhibition_id}] }}}
>>>>>                $field="artwork_id" 
>>>>>                $value={{{ 
>>>>> [{$:/TLS/exhibition_id!!artwork_id}addsuffix[ 
>>>>> ]addsuffix{$:/TLS/artwork_id}] }}}
>>>>>           />
>>>>>      
>>>>> </$list>
>>>>>
>>>>> Link Artworks to Exhibition
>>>>> </$button>
>>>>> </code>
>>>>>
>>>>> The first action-setfield works. The second one doesn't but I can not 
>>>>> determine why. It differs from the first in that the first is editing a 
>>>>> field of the <currentTiddler> from a $list widget whilst the second is 
>>>>> editing a field of a tiddler whose title is stored in the tiddler 
>>>>> $:/TLS/exhibition_id.
>>>>>
>>>>> Is it possible to edit a tiddler not part of the $list widget set?
>>>>>
>>>>> To my understanding, there are essentially two transclusions involved, 
>>>>> first to get to the tiddler whose title is in $:/TLS/exhibition_id and 
>>>>> the 
>>>>> second to the field artwork_id stored in this tiddler.
>>>>>
>>>>> From Tones' excellent cheat sheet, I thought I has it right but 
>>>>> obviously not. 
>>>>>
>>>>> There is obviously an error in my wikitext. But what??
>>>>>
>>>>> Secondly, an earlier query regarding conditional operators with some 
>>>>> advice from Saq Imtiaz.
>>>>>
>>>>> I want to only perform the action-setfield if the value to be inserted 
>>>>> is not already in the field.
>>>>>
>>>>> I thought this would work (replacement for the first action-setfield 
>>>>> statement from above).
>>>>> <code>
>>>>>      <$list [{!!exhibition_id}!contains{$:/TLS/exhibition_id}] 
>>>>>  variable="_null" >
>>>>>            <$action-setfield 
>>>>>                $field="exhibition_id" 
>>>>>                $value={{{ [{!!exhibition_id}addsuffix[ 
>>>>> ]addsuffix{$:/TLS/exhibition_id}] }}}
>>>>>           />
>>>>>      </$list>
>>>>> </code>
>>>>>  but it doesn't.
>>>>>
>>>>> What an I doing wrong here?
>>>>>
>>>>> bobj
>>>>>
>>>>

-- 
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/8867821e-c150-4793-9890-88a790a8454do%40googlegroups.com.

Reply via email to