Modifier un champ

Bonjour,

Après deux jours d’énervement à essayer en vain de réaliser une tâche qui pourtant semble enfantine, je me décide à demander de l’aide.

Voici une version simplifiée de mon problème :

Comment incrémenter la valeur d’un champ par simple clic d’un bouton ?

La solution simple suivante ne fonctionne pas :

<$button set="!!compteur" setTo=<<incremente {!!compteur}>> />

incremente est une macro javascript qui récupère le texte, le transforme en nombre, ajoute 1, et renvoie.

J’ai tenté de transformer le code à grands renforts d’accolades, de chevrons, de dollars, de macros, de $set, $macrocall, $action-setfield… Mais rien, rien n’y fait !

J’ai l’impression que le problème se loge dans l’enchevêtrement des substitutions et transclusions sans vraiment en saisir le fonctionnement…

Merci d’avance pour toute l’aide apportée.

Bonjour @Echophile et bienvenu !

Ton sujet dépasse mes compétences :sweat_smile: Le titre demanderait à être mis à jour car c’est pas tant la modification que l’incrémentation d’une valeur dans un champ.

Je pense qu’il y aurait des ressources sur la liste anglophone principale, avec des opérations mathématiques qui devrait pouvoir te donner des pistes.

Sinon pourquoi ne pas passer par un tiddler temporaire et additionner les deux ensuite peut-être…

Enfin je sais pas s’il y aurait des choses intéressantes du côté de la doc : https://tiddlywiki.com/#Mathematics%20Operators

Tu essaye de faire qu’elle tâche sinon ?

1 J'aime

J’ai une solution :
Soit un Tiddler nommé Base qui contient un champs index avec une valeur de 1 (par exemple)

Puis un autre tiddler nommé Incrémente qui contient le text suivant :

\define addField()
<$wikify name=toto text={{{[[Base]get[index]add[1]]}}} mode="block">
<$action-setfield $tiddler="Base" $field="index" $value=<<toto>>/>
</$wikify>
\end


* Valeur initiale : {{Base!!index}}

<$button actions=<<addField>>>
Incrémenter l'index de [[Base]]
</$button>

Y’a plus qu’à cliquer…

2 J'aimes

Merci infiiiiniment !

C’était le widget wikify qui manquait à mon arsenal pour forcer la transclusion à se produire avant la substitution, ça parrait tellement évident après coup !

J’ai transformé le code sous cette forme en utilisant le plugin calc en vu de futures améliorations :

\define ajouterUnePieceDor()
<$wikify name=nouveauCompte text="<$calc>{{!!or}}+1</$calc>">
<$action-setfield $field="or" $value=<<nouveauCompte>>/>
</$wikify>
\end

* Valeur initiale : {{!!or}}

<$button actions=<<ajouterUnePieceDor>>>Ajouter une pièce d'or !</$button>

Et puisqu’on me demande, j’ai commencé la rédaction d’un wiki pour mes élèves, et je souhaite qu’il contienne des fonctions de révision intégrées, voilà voilà :slight_smile:

1 J'aime