/!\ Un Tiddler Formulaire pour saisir certain champs prédéfinis


#1

Salut !
j’ai semble-t-il besoin d’aide !!!
l’idéé c’est de faire un formulaire de saisie dans un tiddler a partir des champs préfixés par un underscore ‘_’ dont la liste est dans un autre champ ‘list’ (lui non préfixé ) .
Le tiddler possède un champ ‘list’ qui vaut par exemple "_nom _prenom _telephone " .
et aussi un champ ‘_nom’ qui vaut “entrer un nom” …/… et d’autre champ comme ‘_telephone’ qui vaut " mobile ou fixe "

J’aimerais que le tiddler affiche un formulaire des champs listés dans son champ ‘list’
J’aimerais aussi que le formulaire affiche un placeholder equivalent au contenue réel des champs préfixer par ‘_’
pas de soucis pour lister les autres champs préfixé avec le flitre : [list[!!list]removeprefix[]]
j’utilise des macros pour afficher un tableau
par contre je ne sais pas comment comment faire pour que le placeholder du formulaire affiche via la macro valueofitem(prefix) la valeur réel contenue par le champ dans la variable item

\define Tabultem(iname:"Valeur" ivalue:"entrée la valeur")
<tr class="tc-edit-field" ><td class="tc-edit-filedname"> $iname$ </td><td><$edit-text tiddler="$:/temp/newformulaire" field="$iname$" placeholder=$ivalue$ tag="input" type="text"/></td></tr>
\end
\define linename() $(item)$
\define eval(expr)  {{!!_$expr$}} 
\define valueofitem(prefix) {{!!$prefix$$(item)$}}

<table class="tc-edit-fields"><tbody>
<$list filter="[list[!!list]removeprefix[_]]" variable="item">
<$macrocall $name="Tabultem"  iname="<<linename>>" ivalue="<<valueofitem _>>" >
</$list>
</tbody></table>

merci d’avance au contributeur qui se pencheras sur mon cas . Le but est a terme de pouvoir gérer des formulaires en mode Template !


#2

Bonjour @luxool

Ben dit-donc, en deux mois et demi tu passe de la question de savoir comment fermer un tiddler sur TiddlyOueb en mode Oueb, à comment placer la valeur d’une variable dans un placeholder, via une macro !

Ça me mets le moral à zéro, moi qui peine à avancer petitement (mais sûrement) dans ma connaissance de TiddlyWiki.:woozy_face:

En tout cas, Bravo ::clap:

Ton code dépasse mes compétences mais du coup il y a deux points qui éveillent mon intérêt et sur lesquel tu peux peut être m’éclairer :

1- Comment fais-tu pour individualiser les valeurs contenues dans le champ list

<$list filter="[list[!!list]removeprefix[_]]" variable="item"
...
</$list>

Si j’extraie cette partie de code, <$list filter="[list[!!list]removeprefix[_]]" il me semble que les valeurs sont considérées comme un tout.

Par exemple si mon champ contient les valeurs _bleu,_blanc,_rouge, le résultat est rendu comme si _bleu,_blanc,_rouge ne forme qu’un mot et non pas trois.

D’'ailleurs removeprefix n’ôte l’underscore que sur le premier des termes comme ceci:

bleu,_blanc,_rouge

Il me semblait jus qu’a présent qu’il faille utiliser la méthode “split” pour identifier chaque terme individuellement

2- Quelle macro utilises-tu pour afficher un tableau ?

Je sais que poser une question en réponse à une autre n’est pas correct, mais ça montre au moins que je me suis penché sur ton code.

Merci.


#3

Bonsoir @luxool,

Je n’ai pas de solution, mais ça me fait penser en plus simple à ce formulaire que j’avais testé ici : http://tw5.xyz/Guide%20FR/tiddlywiki-guide-fr-CCbysa-5.1.13.html#Adhérents


#4

Merci Prolegomenes de t’être penché sur mon code !!!

  1. pour individualiser les valeurs contenues dans le champ list je les séparent juste par un espace (comme en Forth pas de virgules ici) genre "un deux trois " du coup si ma valeur contient deux mots par exemple vingt trois, ben faut utiliser “vingt-trois” ou “vingt_trois”

  2. pour la macro du tableau c’est la macro Tabulitem définit en haut du tiddler

Je pense avoir trouver ma solution que je post plus bas :wink: Merci pour tes encouragement !


#5

Merci Sylvain !!

J’avoue que j’ai du mal a intégrer toute les subtilité de Tiddlywiki mais je lui voit un énorme potentiel !!


#6

Salut,
:face_with_raised_eyebrow: Je crois que je suis arrivé a fignoler mon bout de formulaire Type

    \define Tabultem(iname:"Valeur" ivalue:"entrée la valeur")
    <tr class="tc-edit-field" ><td class="tc-edit-filedname"><$button style="width:100%"> {{!!_$(item)$}} 
    </$button></td><td><$edit-text field="_edited_$(item)$" placeholder={{!!_$(item)$}} tag="input" type="text"/> 
    </td></tr>
    \end
    \define linename() $(item)$
    \define eval(expr)  {{!!_$expr$}} 
    \define valueofitem(prefix) {{!!$prefix$$(item)$}}
    
    <table class="tc-edit-fields"><tbody>
    <$list filter="[list[!!list]removeprefix[_]]" variable="item">
    <$macrocall $name="Tabultem"  iname="<<linename>>" ivalue="<<valueofitem _>>" >
    </$list>
    </tbody></table>

Il y a donc toujours des champs préfixés par _underscore
et un liste qui les réunis pour les afficher
le résultat de la saisie est donc stocké dans le même tiddler avec un nouveau préfix edited

Ainsi on a un formulaire hyper évolutif !
un exmple des champs sous forme de .tid

_civ: civilité
_courriel: E-mail
_nom: Nom
_prenom: Prénom
_tel: Téléphone mobile
created: 20181115103438210
list: _nom _prenom
modified: 20181121150546661
revision: 0
tags: 
title: $:/luxool/Template/AContact
type: text/vnd.tiddlywiki

j’essaye de créer un lien a glisser au-dessus d’un tiddlywiki de base vous permet d’importer le tiddler suivant, mais le système d’encodage du forum le permet pas


#7

Bonjour @luxool,

Tu as parfaitement raison:

Éditer la valeur d’un champ

Si mon champ edit contient les valeurs _bleu _blanc _rouge séparées d’un espace, alors

<$list filter="[list[!!list]removeprefix[_]]">

</$list>

Affichera verticalement :

bleu
blanc
rouge

Avec un lien sur chacune des couleurs

et

<$list filter="[list[!!list]removeprefix[_]]"/>

affichera horizontalement:

bleublancrouge

Avec un lien sur chacune des couleurs

removeprefix ôte bien l’underscore sur chaque couleur

Peux tu faire un lien sur un tiddler prêt à l’emploi avec l’ensemble de ta solution ?

[Lien vers un tiddler prêt à l'emploi](http://www/xxx)