Tones,

Thank you for your reply.

I think you are looking at the wrong wikitext. I am focusing on Joshua's suggestion, implemented in the tiddler, Link artworks to exhibition Joshua. This implements your suggestion about using action-listops instead of addsuffix which, because it seems to check for duplicates, makes for simpler wikitext. Have a look at the TW I uploaded, http://cultconv.com/TLSConsignment.html to see the latest version.

bobj

On 7/10/20 8:47 am, TW Tones wrote:
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
    <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 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/8867821e-c150-4793-9890-88a790a8454do%40googlegroups.com <https://groups.google.com/d/msgid/tiddlywiki/8867821e-c150-4793-9890-88a790a8454do%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/901ba58d-8234-f835-2740-5cd888805d39%40gmail.com.

Reply via email to