Affectation de variable


#1

Bonjour à tous,

J’ai un petit soucis avec cette macro :

<$button>
<$set name=Muuid field="uuid" value="88" >
UUID : <$UUID />
<$action-setfield uuid=<<Muuid>>/>
</$set>
</$button>

Je voudrais remplacer la valeur “88” par le résultat du widget <$UUID />
Quelle est la bonne syntaxe ?

Merci


#2

Bonjour,

en général, le résultat d’un widget est un objet html (type <div> ou <span>). Il parait donc difficile de l’affecter en l’état à une variable. Souvent la manipulation de variables imbriquées nécessite de passer par des macros.

Dans tous les cas, c’est un peu délicat de proposer une solution avec aussi peu d’information.

Sylvain
@sycom


#3

Bonsoir Sylvain,

Effectivement, je me suis laissé influencé par le rendu dans le bouton, donc sur le dom.
J’ai donc réécrit la macro…

  1. J’ai cloné “$:/core/modules/macros/now.js”
  2. Soit le code suivant :
(function(){
"use strict";

exports.name = "uuid";

exports.params = [
	{name: "format"}
];

exports.run = function(format) {
    var dt = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = (dt + Math.random()*16)%16 | 0;
        dt = Math.floor(dt/16);
        return (c=='x' ? r :(r&0x3|0x8)).toString(16);
    });
	return uuid;
};

})();
  1. Enfin, c’est nettement mieux :
<$button>
<$set name=Muuid field="uuid" value=<<uuid>>>
UUID : {{!!uuid}}
<$action-setfield uuid=<<Muuid>>/>
</$set>
</$button>

Le champ uuid prend ainsi un identifiant unique. Je n’ai plus qu’à trouver où coller

<$action-setfield uuid=<<uuid>>/>

sur le tiddler par défaut et le tour est joué. :stuck_out_tongue_winking_eye:

Tu sais où ?


#4

J’ai trouvé !
Dans : $:/core/ui/Actions/new-tiddler

<$action-sendmessage $message="tm-new-tiddler" uuid=<<uuid>> />

merci tout plein :wink: