Stephen comment on paramètre les espaces des milliers avec le web viewer ?
Et bien, comme je le disais plus tôt, c'est le principal soucis avec le WebViewer, il faut traiter les données directement pour arriver au formatage visuel qu'offre FileMaker… et cela peut apporter son lot de complexité…
Donc, deux propositions, la première en utilisant une fonction personnalisée côté FileMaker, et la seconde avec un brin de JavaScript dans le code HTML du WebViewer.
--
1. Fonction Perso FileMaker
Le code du WebViewer sera quelque chose comme ceci (assez similaire au premier proposé) :
Liste (
"data:text/html," ;
"<body style='margin: 2px; padding: 2px; background-color: #fff; font-size: 16px; font-color: #000; text-align: right;'>" ;
"<span style='padding:3px 4px 1px 4px; outline: 1px solid blue; border-radius: 4px;'>" & setMilliers ( Table::Montant ; "" ; "" ) & " €</span>" ;
"</body>" ;
)
On ajoute donc ici une fonction perso Fmp nommée "setMilliers()", dont voici le code (en français) :
/*
setMilliers ( nNbr ; sSep ; sRes )
Fonction récursive pour retourner un nombre au format texte avec un séparateur des milliers fourni
Paramètres
nNbr (number) : nombre entier ou flotant à traiter
sSep (string) : le caractère de séparation (espace par défaut)
sRes (string) : le résultat du traitement (chaîne vide "" lors de l'appel de la fonction)
Exemples
setMilliers ( 85,45 ; "" ; "" ) = "85,45"
setMilliers ( -7385,45 ; "" ; "" ) = "-7 385,45"
setMilliers ( 277385,45 ; "" ; "" ) = "277 385,45"
setMilliers ( -4927385,45 ; "" ; "" ) = "-4 927 385,45"
setMilliers ( 24927385,45 ; "" ; "" ) = "24 927 385,45"
setMilliers ( -12524927385,45 ; "" ; "" ) = "-12 524 927 385,45"
FredoMkb © 2020
*/
Definir (
[
_ent = Ent ( Abs ( ObtenirNombre ( nNbr ) ) ) ;
_sgn = Si ( Signe ( nNbr ) < 0 ; "-" ; "" ) ;
_dec = ObtenirCommeBooleen ( Abs ( ObtenirNombre ( nNbr ) ) <> _ent ) ;
_fra = Si ( _dec ; Fin ( Abs ( ObtenirNombre ( nNbr ) ) - _ent ; 2 ) ; "00" ) ;
_cma = Filtre ( ObtenirTexte ( Alea ) ; ",." ) ;
_sep = Si ( EstVide ( sSep ) ; " " ; Debut ( sSep ; 1 ) ) ;
_lng = Longueur ( _ent ) ;
_dbt = Debut ( _ent ; _lng - 3 ) ;
_fin = Fin ( _ent ; 3 ) ;
_rec = Longueur ( _dbt ) ;
_num = Si ( _rec > 0 ; _sgn & _dbt ; _sgn ) ;
_res = Si ( EstVide ( sRes ) ; _fin ; _fin & _sep & sRes ) ;
_z = ""
] ;
Cas (
_rec > 3 ; setMilliers ( _num & _cma & _fra ; sSep ; _res ) ;
_lng > 3 ; _num & _sep & _res & _cma & _fra ;
_sgn & _res & _cma & _fra
)
)
--
2. Fonction Perso JavaScript
Ici on gère tout directement dans le WebViewer grâce à un peu de JavaScript, voici donc le code :
Liste (
"data:text/html," ;
"<body style='margin: 2px; padding: 2px; background-color: #fff; font-size: 16px; font-color: #000; text-align: right;' onload='milliers(" & Table::Montant & ")'>" ;
"<span id='montant' style='padding:3px 4px 1px 4px; outline: 1px solid blue; border-radius: 4px;'></span>" ;
"<script>" ;
"function milliers(nombre){const formatage = new Intl.NumberFormat('fr-FR', {style:'currency', currency:'EUR', minimumFractionDigits:2, maximumFractionDigits:2});" ;
"document.getElementById('montant').textContent = formatage.format(nombre).replace(/\u202F/g, ' ');}" ;
"</script>" ;
"</body>" ;
)
--
Je ne sais pas quelle solution donnera l'affichage le plus fluide dans la liste, il faudra faire des tests je pense…
Mais, la première solution, avec la fonction perso Fmp, pourrait être un peu améliorée en créant une rubrique calcul dans laquelle on ferait déjà la conversion avec la fonction perso, du coup, on n'aurait plus qu'à afficher cette rubrique dans le code Html du WebViewer, ce qui aurait pour bénéfice d'éviter les calculs à la volée…
Dans tous les cas, tout ceci est à tester et à adapter à ta solution…
--
Stephen est ce que le web viewer peut être transparent ?
Hélas, non 😶 … malgré les demandes faites à Claris, apparemment cela est plus complexe que ça n'y paraît (il me semble, sauf erreur, que c'est une histoire de moteur Web géré par le système… enfin, de ce que j'ai compris 🙃 ).
Tiens-nous au courant Stp 🙂