Thanks Tones and Joshua for your feedback. I will investigate what you have advised and hopefully this will fix things. Joshua, I was not aware of the timing issue you mentioned. Have not come across that as yet but will keep that in mind from now.

thank again

bobj

On 6/10/20 10:26 am, 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 a topic in the Google Groups "TiddlyWiki" group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/tiddlywiki/ade9rEZzuPg/unsubscribe. To unsubscribe from this group and all its topics, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/9bf12d31-1e8d-494f-96cd-ce937d9ef9a0n%40googlegroups.com <https://groups.google.com/d/msgid/tiddlywiki/9bf12d31-1e8d-494f-96cd-ce937d9ef9a0n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
--------------------------------
Dr Bob Jansen
122 Cameron St, Rockdale NSW 2216, Australia
Ph (Korea): +82 10-4494-0328
Ph (Australia) +61 414 297 448
Resume: http://au.linkedin.com/in/bobjan
Skype: bobjtls
KakaoTalk: bobjtls
http://cultconv.com

In line with the Australian anti-spam legislation, if you wish to receive no further 
email from me, please send me an email with the subject "No Spam"

--
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/cc121e70-e903-8f1a-95ee-6979c9b3b7c3%40gmail.com.

Reply via email to