Skip to main content

Nouveautés de la version 4.2

1. Mise à jour de WildFly, JAVA et du socle technique

  • Migration vers Java 17 et Wildfly 26.1.1 (Java 11 est toujours supporté) ;

  • WildFly 26 n’est plus compatible avec le module qui crypte le mot de passe dans le référentiel, il peut être chiffré dans un CreditentialStore et sa clé est offusqué dans le standalone.xml ;

    La gestion de la configuration de Kerberos a été revu en raison du passage de WildFly au module elytron ;

  • Utilisation du paramètre « -XX:+UseStringDeduplication » pour éviter d’avoir plusieurs instances d’une String en mémoire (pour les longs live objets) et suppression du paramètre optimisationMode ;

  • Retrait du script de démarrage le support de Solaris, car l’OpenJDK n’est plus compatible depuis la version 9 ;

  • Mise à jour le script de migration en fonction des différences de configuration (et en recopiant les valeurs de tous les paramètres de JVM -Dxxxxx présent d’origine dans les nouveaux fichiers de conf et notamment -Dhttp[s].proxyHost -Dhttp[s].proxyPort) ;

  • Possibilité de choisir un schéma autre que celui par défaut pour le référentiel ;

  • Mise à jour de toutes les libraires JAVA et notamment :

    Passage à Hibernate 5.6

    Mise à jour de SMBJ pour son support du protocole SMBv3 ;

    Remplacement de JCSH par SSHJ dans les librairies de fonctions SSH et File (pour SFTP) ne, car JCSH ne gère pas les algorithmes de chiffrement récents ainsi que les clés SSH commençant par : « -----BEGIN OPENSSH PRIVATE KEY----- » ;

  • Mise à jour de toutes les libraires JavaScript pour la v4 :

    • Notamment les plugins leaflet, CKeditor 4.18.0, jQuery 3.6…

  • Modernisation du code JavaScript avec, entre autre, la migration vers les classes JavaScript standard dans le code OUI et la compilation des classes en mode ECMASCRIPT_2016 ;

  • Configuration du « java.io.tempdir » dans le répertoire temp de WildFly plutôt que celui du système ;

  • Ajout comme dépendance optionnel de NodeJS et Chromium/Chrome qui permettra d’invoquer du JavaScript ;

  • L’API JavaScript « puppeteer » est désormais utilisé en remplacement de PhantomJS pour les fonctions de captures d’écran ;

 

2. Navigateurs supportés pour la version 4.2

La compilation du code JavaScript en mode ECMASCRIPT_2017 impose la fin du support des versions de Firefox antérieures à la 52, Chrome antérieur à la version 55 (et donc de Chrome sous Windows XP et Vista), Edge 40 et Safari 9 et 10 (et donc des iPhone 4s, 5, 5c, des iPad 2, 3, 4, Mini 1 et de Safari sous MacOs 10.9 Mavericks, 10.10 Yosemite) en raison du non-support des classes JavaScript, des fonctions asynchrones et des déclarations de variables avec « let » et « const ».

Les versions minimales retenues pour la version 4.2 sont donc :

  • Mozilla Firefox 52

  • Google Chrome 55 (57 pour le Designer)

  • Opera 42 (44 pour le Designer)

  • Apple Safari 11 (et donc nécessite au minium MacOS 10.11 El Capitan pour ce navigateur)

  • Microsoft Edge 41 (correspondant à la version 16 du moteur EdgeHTML)

  • Apple Safari sous iOS 11 (et donc nécessite au minium un iPhone 5s, iPhone SE, iPad 5, iPad Mini 2, iPad Air, iPad Pro)

  • WebView iOS 11 (dont Chrome, Firefox, Edge et les autres navigateurs)

  • Google Chrome sous Android

  • Mozilla Firefox sous Android

  • Samsung Internet Browser 6.2 sous Android

  • WebView Android 5

 

3. Améliorations de la gestion des services web

La refonte des Web services se poursuit dans cette version de la plateforme.

Refonte des Web services en mode fourniture, principalement pour la gestion du mode REST « moderne » :

  • Le débogueur affiche désormais les en-têtes HTTP des requêtes passés et des réponses reçus

  • L’arbre des réponses JSON n’était pas ordonnée correctement ;

  • Le nom du service Web accepte désormais les caractères / , . et – permettant d’écrire un service de type « mon_service/api/v1 » ;

  • Possibilité de passer des variables dans le chemin des méthodes REST (lorsque le mode SOAP n’est pas activé sur le service) ;

  • Export des descriptions au format OpenAPI v3.0.0 en YAML mieux adapté et adopté pour les API REST moderne (au lieu du WSDL lorsque le mode SOAP n’est pas activé sur le service) ;

  • Support des appels en mode HTTP « PUT », « PATCH » et « DELETE » pour les méthodes REST (lorsque le mode SOAP n’est pas activé sur le service) ;

  • Possibilité de définir des en-têtes HTTP passé ou renvoyé en mode REST ;

  • Possibilité de définir les arguments du SOAP Header passé ou renvoyé en mode SOAP ;

  • Au cas où le retour d’une méthode ne contiennent qu’un seul élément de type liste, il est désormais possible d’indiquer que cette liste est la racine du JSON retourné (dans l’onglet avancé de la méthode) ;

  • Possibilité de préciser qu’un argument est de type est énuméré et d’en spécifier les valeurs ;

  • Possibilité de définir le type de contenu de la réponse : JSON, XML, les deux, ou fichier dans les méthodes REST ;

  • Possibilité de définir le type de contenu de la requête x-www-form-urlencoded, fichier binaire, fichier dans un muti-part/form-data, ou objet JSON dans les méthodes POST, PUT et PATCH ;

  • Possibilité de définir une valeur par défaut pour les champs ;

  • Possibilité de définir les valeurs min et max pour les champs numériques ;

  • Support des retours d’erreur JSON et XML (à la manière du mode SOAP) si des arguments d’erreur ont été définis. (Ils doivent être affectés notamment dans l’événement en cas d’erreur) ;

  • L’assistant de création de service métier depuis un fichier de description accepte désormais les fichiers de descriptions OpenAPI v3.0, v3.1 et Swagger v2.0 au format YAML et JSON en plus du format SOAP WSDL ;

  • Ajout d’une variable prédéfinit permettant de récupérer le contenu de la réponse renvoyé dans les événements « Après exécution » en plus de celle, déjà présente, permettant de récupérer le contenu de la requête reçu ;

  • Gestion des codes retours personnalisée supplémentaires via la variable prédéfini accessible en écriture « Code Retour HTTP » :

  • Les codes supplémentaires doivent être défini dans le formulaire de la méthode ;

  • Forcer un code 4xx ou 5xx retournera les arguments d’erreurs ou la variable dernière erreur s’il n’y en a pas et équeutera l’événement en cas d’échec après execution ;

  • Les codes par défauts sont le premier 2xx spécifié dans le formulaire de la méthode et 500 en cas d’erreur ;

  • Le code retour 204 ((No Content) permet de ne pas renvoyer de contenu dans la réponse ;

  • Les codes standard sont principalement :

    Succès : 200 (OK), 201 (Créé), 202 (Accepté), 204 (Pas de Contenu), 205 (Réinitialiser le Contenu), 206 (Réponse Partielle).

    Erreurs client : 400 (Mauvaise requête), 401 (Non autorisé), 403 (Interdit), 404 (Introuvable), 409 (Conflit), 429 (Trop de Requêtes).

    Erreurs serveur : 500 (Erreur interne au serveur), 503 (Service indisponible).

Les Web services en mode appel ont aussi reçu quelles améliorations :

  • Le débogueur affiche désormais les entêtes HTTP des requêtes passés et des réponses reçus dans la popup « Afficher requête et résultats » de l’action d’appel ;

  • Les arbres des requêtes et des réponses JSON n’étaient pas ordonnées correctement ;

  • Support des appels en mode HTTP « PUT » ;

  • Le mode muti-part/form-data accepte désormais plusieurs paramètres en plus du fichier ;

  • Le mode import accepte désormais des fichiers de description OpenAPI v3.0, v3.1 et Swagger v2.0 au format YAML et JSON en plus du format SOAP WSDL ;

  • En mode pour les méthodes POST, PUT, PATCH, il est désormais possible de définir un entête HTTP contenant la signature du corps de la requête en utilisant l’algorithme Hmac-SHA256. Un secret devra être affecté au champ « HmacSecret » dans l’action ;

 

4. Améliorations du composant Carte

Le composant carte a été amélioré :

  • Ré-implémentation de la barre d’outil pour dessiner en remplaçant le plugin « Leaflet Draw » par « Leaflet Geoman » (licence MIT) qui permet plusieurs des améliorations suivantes ;

  • Possibilité d’activer le mode création sur plusieurs éléments de même type ;

  • Dans ce cas une propriété label permet de choisir le texte au survol du bouton de création pour différentier les éléments de même type ;

  • Les styles par défaut (color, weight, opacity…) et l’icône du marqueur sont appliqués sur l’icône du bouton de création pour différentier les éléments de même type ;

  • Lors de la création et de la modification, les points se collent aux marqueurs et autres traits existants lorsque la souris s’en rapproche ;

  • Possibilité d’activer la modification et/ou la suppression séparément (ATTENTION : cela nécessite une modification des applis qui utilise la propriété « Modifiable et supprimable » dans des comportements ou qui ont affecté cette propriété à une colonne du jeu de donnée de la carte) ;

  • Il est possible de tourner les polygones et polylignes ;

  • Il est possible d’activer un nouveau bouton « Couper les calques » qui permet de faire des trous dans les polygones ou de couper les polygones et polylignes en plusieurs segments reliés entre eux ce qui permettra de les déplacer et de les tourner ensemble.

    Pour que l’option apparaisse dans la barre de dessin il faut ajouter, dans le jeu de données, une colonne booléenne « Point coupant le polygone » ;

    Pour le multi-segment il faut que la colonne « Identifiant de l’élément de carte » contiennent un tiret. (Exemple : « 0-0 » et « 0-1 » représente deux segments du même multi ligne/polygone ;

  • Les différents boutons de modification et suppression de la barre de dessin n’apparaissent pas si aucun type d’élément de la carte n’a activé les options de modification ou la suppression ;

  • Il est possible de remplir une forme géométrique avec un motif grâce en donnant l’URL à la propriété :

    fill: url(/files/Images/pattern.png) ;

    ou directement le contenu d'une image SVG sous la forme (width et height sont requis) :

    fill: url(data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><line x1="0" y1="5" x2="10" y2="5" stroke="black" stroke-width="1"/></svg>);

  • En cas de remplissage avec un motif, on peut de le déformer ou de le tourner avec :

    patternTransform: rotate(45) scale(-0.5) skewX(30);

  • Il est possible de choisir à quel niveau de zoom les éléments de carte s’affichent ;

  • La propriété « Priorité de l’élément de carte » fonctionne désormais pour les formes géométriques en plus des marqueurs. Utile pour éviter que les petites formes se retrouve en dessous des grandes et donc ne reçoivent pas les événements clique ;

  • Nouvelle option pour afficher la bulle d'aide au survol plutôt qu’aux cliques sur les marqueurs et formes géométriques ;

  • Support des couches de tuiles WMS raster ;

  • Ajout d’un type de couche pour grouper des éléments de carte permettant à l’utilisateur d'afficher ou masquer un ensemble de marqueurs ou une forme géométrique (dont leur type a été associé à cette couche) via le bouton de sélection des couches ;

  • Possibilité d’afficher plusieurs itinéraires si la fonction « Identifiant de l’élément de carte » est affecté à une colonne du jeu de données ;

  • Possibilité de choisir la position des icônes par rapport aux coordonnées sur les marqueurs ;

  • Recompilation de la librairie « mapbox-gl-js » sans le support des contrôles, marqueurs, évènements pour en réduire la taille du JavaScript.

 

5. Ajout d'un nouveau type de rapport PDF

Ajout d’un nouveau type de rapport (API Ontomantics) qui permet de générer des fichiers PDF complexes.

Ce mode n’utilise pas de fichier modèle, mais le Drag&Drop d’Ontomantics comme celui des écrans, mais considérablement allégé. Cela permet de facilement insérer des tableaux, graphiques, cartes..

La page possède un composant racine de type page contenant différentes zones pour les en-têtes et pieds de pages.

Les labels, posés dans les zones en-tête et pieds de pages, peuvent alors avoir les types suivants :

  1. Défaut : Texte classique ;

  2. Numéro de page : Le numéro de page courante ;

  3. Nombre de page : Le numéro de page total ;

  4. Contenu du titre [1...6] : Affiche le contenu de la balise <h1>...<h6> de la page courante ou des pages précédents.

Les labels peuvent aussi contenir des $variables, des conditions #if() et des boucles #for() utilisant la syntaxe « Apache Velocity » comme pour les rapports textes. Ces variables apparaîtront alors dans l’onglet « Contenu ». Les #if(), #for() et leurs #end associés doivent impérativement se trouver dans la même étiquette.

Les sauts de page peuvent être géré par l’utilisation des classes break-before-page, break-after-page, break-before-left, break-after-left, break-before-right, break-after-right, break-inside-avoid ou avec les styles CSS inline correspondant.

Il est possible de copier / coller les contrôles d’un écran existant, mais les composants non-compatible (tels que les éléments de formulaires) seront remplacé par des étiquettes.

La librairie « Paged.js » est ensuite utilisé pour découper le contenu de la page HTML en une succession de pages indépendante permettant ensuite l’impression des en-têtes et pieds de pages complexes.

Paged.js est une bibliothèque JavaScript gratuite et open source qui pagine le contenu dans le navigateur pour créer une sortie PDF à partir de n'importe quel contenu HTML. Cela signifie que vous pouvez concevoir des ouvrages pour l'impression (par exemple, des livres) en utilisant HTML et CSS !

Paged.js suit les normes Paged Media publiées par le W3C (c'est-à-dire le module Paged Media et le module Generated Content for Paged Media). En effet, Paged.js agit comme un polyfill pour les modules CSS afin d'imprimer du contenu en utilisant des fonctionnalités qui ne sont pas encore supportées nativement par les navigateurs.

https://pagedjs.org/documentation/

La conversion PDF est enfin effectuée par le navigateur « Chromuim » (ou dérivé) qui est géré par un script NodeJS, utilisant l’API « puppeteer », qui se charge de démarrer et de contrôler le navigateur.

 

6. Nouveau composant GANTT

Un nouveau composant GANTT pour la gestion de projet composant a été implémenté.

Il est basé sur le composant planning, mais fonctionne différemment :

  • Il est composé de « Tâches », de « Phases » (représentant un groupe de tâches) et de « Jalons » ;

  • Des types « Tâches prévues », de « Phases prévues » et de « Jalons prévues » peuvent être affiché dans le but de comparer le décalage avec la réalisation ;

  • Chaque ligne ne peut contenir qu’une seule tâche, éventuellement séparé en plusieurs morceaux. Chaque morceau devra alors posséder le même « ID de ligne » ;

  • Chaque tâche doit renseigner sa phase parente avec la colonne « ID Parent » et les lignes seront triées principalement selon ce paramètre ;

  • Il est possible de dézoomer au niveau d’une semaine (si option activée) et d’un mois par colonne (La largeur d’une journée n’est pas limité à 34 px minimum comme sur le planning) ;

  • Un second jeu de données est associé au composant pour les contraintes qui permet de dessiner des flèches entre les tâches. Il doit posséder les colonnes :

    1. « Depuis » et « Jusqu’à » : ID des deux lignes de tâches concernées ;

    2. « Type » : Type de contrainte parmi : « Finish-to-Start », « Finish-to-Finish », «Start-to-Start » et « Start-to-Start » ;

    3. « Décalage » : Une durée minimale optionnelle entre un Finish et un Start ;

  • Les lignes de phases du tableau peuvent être replié à la manière d’un arbre ;

  • Si une tâche possède de la sous-tâche, elle se transformera en phase automatiquement et ces dates seront calée sur les tâches enfants ;

  • Les tâches peuvent avoir une date de début et une durée. La date de fin est alors automatiquement calculée. Les date de début ou de fin sont affectées/corrigé en fonctions des contraintes. La durée est prioritaire sur la date de fin ;

  • Si les date de début ou de fin du planning ne sont pas spécifiées, alors le composant se calera automatiquement sur la période couverte par les tâches du projet ;

  • Les durées pourront être configurées en jour ouvré, jour ouvrable ou brute ;

  • Une option permet l’affichage de la section critique (durée minimale possible du projet) ;

  • La fonctionnalité « Est critique » pourra être affecté aux jeux de données de taches et sera alors automatiquement rempli ;

  • Remplacer le style du jour courant par un trait noir vertical ;

  • Affichage de deux colonnes, date de début et date de fin dans les tableaux ;

  • Possibilité de d’ajouter des contraintes (flèches) à la souris ;

 

7. Autres fonctionnalités

Les éléments de menu sont désormais considérés comme des contrôles pour pouvoir en modifier leurs labels, état visible, état désactivé, styles et badges ;

Une boite de dialogue peut désormais être ouverte directement depuis un élément du menu ;

La classe CSS est déplacée à la racine de la popup. Cela peut nécessiter d’ajuster les styles personnalisés ;

Les composants listes ont un DIV supplémentaire à leur racine ce qui permet de supprimer la position : sticky des filtres qui ne fonctionnent pas correctement sous safari. Cela peut nécessiter d’ajuster les styles personnalisés ;

Ajout la résolution XXL à 1400 px comme pour Bootstrap 5 ;

L’U.C. des styles utilise désormais l’API JavaScript « autorpefixer » (lorsque la dépendance optionnelle NodeJS est installé) qui permet lors de la sauvegarde :

  • Être averti en cas d’erreur de syntaxe dans un fichier de classe ;

  • Ajoute les préfixes (-moz, -webkit, -ms) pour un meilleur support des anciennes versions des navigateurs toujours supporté par la plateforme ;

  • Supprimer les propriétés préfixées pour le support des anciennes versions des navigateurs non supportées par la plateforme (lorsque la propriété non préfixée est définie après) ;

Les composants Liste de fichier et Lecteur de média affichent la prévisualisation des documents en PDF via une version embarqué de l’API PDF.js (l’API du lecteur PDF intégré de base dans Firefox) à la place de celui intégré par défaut aux navigateurs (Pour les navigateurs compatibles Firefox >= 78, Chorme/Edge >= 64 et Safari mac >= 11.1 et Safari iOS ≥ 11.3). Ce qui a certains avantages :

  • Le lecteur s’affiche désormais même si celui par défaut est désactivé ou que le navigateur (principalement mobile) ne le supporte pas ;

  • Les PDF XFA s’affichent désormais sous les navigateurs Chromium et dérivées et Safari ce qui n’était pas le cas avec le lecteur d’origine ;

  • Le bouton « télécharger » télécharge désormais le fichier office d’origine et pas forcément le PDF affiché ;

  • Les propriétés du document affichent le nom, la taille et la date de création su fichier office d’origine et pas forcément le PDF affiché ;

  • Options pour masquer les boutons télécharger, imprimer ou plein écran.

Possibilité d’exporter et d'importer les variables de contextes au format Excel ;

Possibilité d’importer les rôles d’une application ou service Web depuis un fichier Excel ;

Meilleure gestion du déploiement en cas de renommage des tables ou des colonnes clés primaires ;

Meilleure gestion des colonnes auto-incrément (en particulier sur PostgreSQL et Oracles à partir de la version 12c) :

  • Sous PostgreSQL, on détecte si les séquences liées aux clés primaires ne sont pas à jour et un bouton permet, le cas échéant, de les synchroniser ;

  • Sous oracle 12c et + les tables sont déployées avec une clé primaire auto-incrémentable ;

  • Les tables sont désormais créées et importées avec l’option « Laisser la base gérer l’auto-incrément » si la colonne ID est de type nombre identité ;

L’OFFSET fonctionne désormais sous SQL Server à partir de la version 2012 ;

Amélioration de l’ergonomie des composants de saisie de date et heures : Il est désormais possible de spécifier, pour le contrôle saisi de date, les propriétés « Date minimale » et « Date maximale », de copier/coller une date dans ces champs, les flèches haut et bas respectent les limites de date et d’heures ;

Amélioration de l’ergonomie du composant de saisie nombre, il n’est plus nécessaire de cliquer deux fois pour sélectionner la valeur.

Amélioration du composant tableau :

  • Nouveau filtre déroulant avec sélection multiple ;

  • Nouveau filtre avancé avec menu déroulant proposant en fonction du type de cellule de choisir entre égale, différent, est vide, n’est pas vide, entre, inférieur, supérieur, contiens, contiens pas, et des périodes de dates (hier, aujourd’hui, demain, [la semaine / le mois / l’année] [précédent / courant / prochain])… ;

  • Option permettant de réorganiser les colonnes (Pouvant être sauvé et restauré grâce au paramètre « Configuration utilisateur » de la table) ;

  • Option permettant de redimensionner les colonnes (Pouvant être sauvé et restauré grâce au paramètre « Configuration utilisateur » de la table) ;

  • Les filtres des colonnes tiennes compte des autres filtres pour n’afficher que les valeurs restantes ;

  • Possibilité de filtrer les cellules vides dans les filtres liste déroulantes ;

  • Nouveau type de colonne sélection, lorsque la sélection multiple est activée, affichent des checkboxes avec une checkbox trois états permettant de tout sélectionner/désélectionner dans l’entête et sur les lignes de regroupement ;

  • Pour les colonnes booléennes éditables, il est désormais possible d’activer l’option afficher le bouton tout cocher/décocher dans l’entête et sur les lignes de regroupement ;

  • Possibilité de trier sur plusieurs colonnes en cliquant sur d’autres colonnes en appuyant sur les touches Ctrl ou Shift ;

  • Champs « style » et « classe de style » pour les en-tête et pied de pages des colonnes ;

  • Possibilité de contrôler l’état déplié/replié des lignes de la table expansible via une colonne du jeu de données ;

  • Plusieurs optimisations ;

Amélioration du composant graphique :

  • L’ordre d’affichage des colonnes valeur est respecté dans le graphique mixte ;

  • Ajout de la propriété « Couleur de remplissage » en plus de « Couleur » (du trait). Il est possible d’utiliser la valeur « transparent » sur les lignes pour désactiver l’aire en dessous ;

  • Ajout des options « Masquer l’axe X » et « Masquer l’axe Y » ;

  • Ajout de la propriété « Texte du milieu » pour les graphiques de type « Donut » ;

  • Possibilité de choisir l’épaisseur du donut (50 % du rayon par défaut) ;

  • Ajout de la possibilité de personnaliser les styles des lignes points barres et parts des graphiques, voir doc.

Possibilité de contrôler l’état déplié/replié des nœuds d’un arbre via une colonne du jeu de données ;

Le pour chaque sur les lignes filtrées du tableau tien compte du tri courant et implémentation de la possibilité d’itérer sur les lignes filtrées des tableaux croisés, des plannings et des arbres.

Correction pour les éléments de menus qui ne se surlignent plus si la valeur n’est pas mappé sur une colonne du jeu de donnée du composant « Répéter » car cela posait un problème dès que le menu apparaissait en plusieurs exemplaires ;

Ajout des opérateurs date « EXTRACT EPOCH S » et « EXTRACT EPOCH MS » qui retournent respectivement le nombre de secondes et de millisecondes depuis le 1er janvier 1970 à minuit + le décalage induit pas le fuseau horaire défini sur le système (Sauf en mode Oracle et SQL Server) ;

Ajout des opérateurs date « EXTRACT DATE » et « EXTRACT TIME » qui tronquent respectivement l’heure et la date d'un timestamp ;

Ajout de l’opérateur string « REMOVE ACCENTS » ;

Les tâches du planning peuvent être redimensionnées par la gauche et les rôles peuvent désactiver la modification des tâches et/ou leurs sélections ;

Option pour masquer l’entête sur le composant table d’upload ;

Améliorations et corrections pour OpenID Connect. Il fonctionne désormais dans le login des applications du player et il est désormais possible de choisir parmi deux modes d’activation :

  • Dans le nouveau mode « Mixte » où la page d'identification affiche un bouton pour se connecter avec OpenID Connect ainsi que le formulaire de connexion Ontomantics. Le formulaire de configuration ajoute trois champs : label, icône et style CSS ;

  • En plus du fonctionnement actuel en mode « Redirection » l'utilisateur est automatiquement redirigé vers le serveur d'authentification OpenID Connect. La page d'identification de la plateforme n'est alors plus visible. (Hormis en ajoutent le paramètre
    « 
    ?sso=disabled » à l'URL de la plateforme)

Dans le formulaire de création des utilisateurs, il est désormais possible de choisir le mode de gestion des mots de passes parmi :

  •  Envoyer un lien pour affecter le mot de passe par e-mail ;

  • Générer un mot de passe aléatoire et l'envoyer par e-mail ;

  • Saisir un mot de passe et l'envoyer par e-mail ;

  • Saisir un mot de passe sans l'envoyer par e-mail.²

Dans l’action « Affecter un utilisateur à un groupe », en mode création de compte si le login n’existe pas, il est désormais possible de choisir le mode de gestion des mot de passes parmi :

  • Aucune action ;

  • Envoyer un lien d’activation par e-mail ;

  •  Envoyer un lien pour affecter le mot de passe par e-mail ;

  • Générer un mot de passe aléatoire et l'envoyer par e-mail ;

  • Envoyer par e-mail le mot de passe affecté par e-mail ;

  • Générer un lien d’activation qui sera sauvé dans une variable ;

  • Générer un lien pour affecter le mot de passe qui sera sauvé dans une variable.

Il est, de plus, possible de choisir vers quelle application les liens de ces mail renvoient ou vers l’adresse générale de la plateforme.

Dans l’assistant d’import des utilisateurs, il est désormais possible de choisir l’action à effectuer pour les comptes sans mots de passes parmi :

  • Ne pas importer le compte ;

  •  Envoyer un lien pour affecter le mot de passe par e-mail ;

  • Générer un mot de passe aléatoire et l'envoyer par e-mail.

Il est désormais possible de déboguer une application en tant qu’un autre utilisateur ou un utilisateur non identifié (pour les appli accessible publiquement) dans l’onglet « Rôles »

Amélioration des performances lorsqu’on ouvre le débogueur après avoir lancé une application avec beaucoup d’écrans n’étant pas en cache ;

Ajout d’un composant Annoter des PDFs. Basé sur PDF.js, il est, pour le moment, limité à la création de traits à main levée et de textes libre. Un bouton « Sauver » apparaît et envoi au serveur le fichier ainsi modifié. Le développeur peut alors sauver le fichier annoté via son nouvel identifiant. Ce composant n’est pas compatible avec les plus anciens navigateurs Firefox < 78, Chorme/Edge < 64 et Safari < 11.1.

Améliorations de l’ergonomie de la conception d’écran :

  • Ajout de l’élément « Afficher uniquement » dans les menus contextuels des contrôles conteneur qui permet de retirer le reste de l’écran. Le bouton « Réafficher tout le contenu » apparaît alors dans la barre d’outil. Cela, en complément du bouton « N’afficher que le contenu principal » déjà existant ;

  • Ajout du menu contextuel « Insérer un contrôle … » avec possibilité de choisir en premier, en dernier dans les éléments conteneur, avant, après, au-dessus et en dessous, en plus de l’insertion du contrôle parent existant ;

  • Ajout du menu contextuel « Coller …. » avec possibilité de choisir en premier, en dernier dans les éléments conteneur, avant, après, au-dessus et en dessous ;

  • Ajout du menu contextuel « Insérer un contrôle » et « Coller …. » entre les lignes permettant d’en créer de nouvelles ;

  • Les boutons plus apparaissant dans le dag&drop ouvrent désormais la popup d’insertion du contrôle à la place du menu déroulante ;

  • La popup d'insertion des contrôles permet désormais de choisir le label pour les contrôles compatible ainsi que l’orientation des dispositions linéaires ;

  • Corrections lorsqu'on déplace des contrôles de la grille X/Y vers la grille Responsive.

Ajout d’une action permettant de masquer une notification ;

Amélioration des onglets utilisateurs du groupe et groupes de l’utilisateur ;

En plus du fonctionnement actuel en mode « Redirection » l'utilisateur est automatiquement redirigé vers le serveur d'authentification OpenID Connect. La page d'identification de la plateforme n'est alors plus visible. (Hormis en ajoutent le paramètre ?sso=disabled à l'URL de la plateforme)

Lorsqu’on sauve un fichier déjà existant dans la GED, on crée désormais un lien physique sur le système de fichier pour éviter de consommer deux fois l’espace disque (Uniquement pour les fichiers nommés par leur identifiant). Ces fichiers sont mis en lecture seule pour éviter le risque d’en modifier un et donc que les autres le soit aussi.

Possibilité de recharger l’écran ou la boite de dialogue courante dans le débogueur pour afficher les modifications. Cela évite d’avoir à recharger toute l’application et à refaire tout le cheminement pour revenir dessus.

Le designer possède nouvelle fonctionnalité permettant d'annuler les derniers changements !
L’annulation fonctionne dans les différents modules menus conception et est limitée aux 10 dernières actions utilisateurs pour chaque application ouverte. Un nouveau bouton est apparu dans la barre d'outil du menu conception. Il peut aussi être invoqué avec le raccourci clavier Ctrl+Z.

Nouvel assistant sur les formulaires permettant l’intégration des labels dans les champs de saisie.

Option pour de rendre redimensionnable la première colonne des tableaux croisés, planning et Gantt.

Implémentation du double-clic sur les tâches des composants planning et Gantt.

Réimplémentation du composant image avec zone cliquable de la V3 ;

Amélioration des performances de l’U.C. de gestion des fichiers. Sous Linux, les fichiers identiques liés par lien physique ne sont plus comptés qu’une seule fois pour l’affichage de l’espace utilisé par un dossier ;

Possibilité de contrôler l’indicateur de chargement pendant l’exécution d’une règle ;

  • Pour cela, il suffit de changer les valeurs des trois nouvelles variables prédéfinies accessibles en écriture ;

  • La variable « Type d'indicateur de chargement » permet de choisir le type parmi « spinner » (valeur par défaut), « linear » ou « bar » ;

  • La variable « Valeur de l'indicateur de chargement » permet d’affecter le pourcentage d'entre 0 et 100 ou vide si indéterminé ;

  • La variable « Label de l'indicateur de chargement » permet d’affecter un message en dessous de l’indicateur ;

  • Ces variables seront prises en compte immédiatement par le navigateur ;

  • Leurs valeurs seront réinitialisées à la fin de l’événement ;

  • Ces variables sont aussi accessible dans les services métier.

Il est désormais possible d’effacer ou affecter la variable prédéfinie « Dernière erreur » ;

Les menus/sous menus ne sortent plus de l’écran ;

Ajout d’une option sur les rapports JETT permettant de choisir si l’on doit ou non « Évaluer les formules dans les rapports générés » afin que les résultats des calculs soit présent dans les fichiers générés. Désactiver cette option permet d'améliorer les performances si le rapport en contient, mais si des outils tiers doivent relire ses fichiers, ils pourraient ne pas avoir recalculé les résultats ;

Ajout du type « Fichier » sur les colonnes de JDD. Cela a pour effet d’afficher une miniature dans la colonne du tableau droit. Il dispose alors d’options pour afficher la miniature et ouvrir la prévisualisation comme pour le composant liste de fichier.

Les composants liste de fichier et table d’upload ont une option pour afficher ou non la miniature.

Amélioration de l'import de fichier :

  • Implémentation de la lecture des fichiers JSON ;

  • Capturer un tableau Excel vertical par nom des colonnes (en spécifiant la ligne des titres) ;

  • Capturer un tableau Excel vertical par nom de tableau ET des colonnes, en spécifiant la ligne des titres relatif par rapport à la zone définie ;

  • Possibilité de définir si une capture de cellule ou de colonne (par nom) est requise ou non dans l’import Excel ;

  • Ajout d’une option permettant de choisir si l’on doit ou non « Évaluer les formules dans les cellules lues » afin d'avoir les résultats des calculs à jour. Désactiver cette option permet d'améliorer les performances si les cellules lues du fichier en contient, mais si le fichier a été modifié par des outils tiers, ils pourraient ne pas avoir recalculé les résultats.

  • Ajout d’une option permettant de choisir de lire un fichier XLSX ou ODS en mode streaming. Activer cette option permet d'améliorer les performances et la mémoire consommée, mais les formules ne peuvent plus être évaluées afin d'avoir les résultats des calculs à jour si le fichier a été modifié par des outils tiers qui pourraient ne pas avoir recalculé les résultats. De plus, la lecture est limitée à une seule table verticale ou croisée avec recherche par nom de colonne ou de coordonnées.

Les requêtes SQL modifiant la structure de la base apparaissent dans l’onglet historique des modèles de données.

Amélioration de la politique de mot de passe de la plateforme :

  • Option pour afficher le bouton permettant de révéler le mode de passe sur les différents champs ;

  • Option pour empêcher la saisie d'un mot de passe trop similaire au précédent (détection si un seul caractère diffère) ;

  • Option pour empêcher l'utilisation d'un mot de passe apparaissant dans la liste des un million les plus fréquemment utilisée dans le monde ;

  • Option pour déconseiller l'utilisation des données personnelles telles que le nom, le prénom, la date de naissance, le nom de l'animal de compagnie, la ville de résidence…. Cela a pour effet d’afficher un message lors de la saisie et empêche l’utilisation du login, des noms, du dernier mot de l’adresse, du code postal de la ville et des portions de l’e-mail ;

  • Option pour bloquer temporairement les tentatives de connexions à compte pendant plusieurs minutes après un certain nombre d'essais infructueux (1 min après 4, puis 2, 5, 10, 15, 20, 30, 60 minutes, ensuite 90 minutes entre chaque tentative suivantes) ;

  • Options pour choisir le nombre minimal de caractères de chaque catégorie (majuscules, minuscules, chiffres, caractères spéciaux).

Amélioration de l’accessibilité de la plateforme :

  • Il est désormais possible d’affecter un titre personnalisé sur l’onglet avec la variable prédéfini « Titre de la page » ;

  • Option « Texte indicatif par défaut » sur le composant image ;

  • Navigation avec les flèches sur les composants menus

  • La touche Echap ferme le dernier sous-menu ;

  • Améliorations sur les tableaux et pagination ;

  • Le composant cadre dynamique n’était pas accessible au clavier ;

  • Les composants liste, liste déroulante, combobox et autocomplétion ne restituaient pas les options ;

  • Lien d’évitement invisible en début de la page permettant de se rendre directement au contenu principal ;

  • Possibilité de spécifier un exemple d’e-mail à afficher dans les messages d’erreur invalide ;

  • Amélioration de la navigation au clavier sur les composants menus, tous les types de liste...

  • Futures améliorations à apporter selon : https://www.w3.org/WAI/ARIA/apg/patterns/

Possibilité d’exporter en Excel le résultat des requêtes dans l’onglet données du modèle de données.

Possibilité d’exporter en Excel les Jeux de données dans le debugger.

La fonction mergePDF() de la librairie PDF est désormais instantanées.

Nouvelle fonction dans la librairie String formatDouble() et formatInt() prenant la lange en paramètre pour avoir les bons séparateurs de milliers et de virgules.

Possibilité de convertir les méthodes Web SOAP en méthode REST de type HTTP POST acceptant des requêtes de type JSON ou en méthode REST de type HTTP GET pour celles sans paramètres. Le fichier de description du service au format YAML OpenAPI est alors disponible en remplacement du WSDL. Il suffit ensuite de changer dans l’URL d’appel, coté client, les paramètres
?wsdl en ?yaml et de resynchroniser les services.

Les composants de saisie d’heure permettent de spécifier une heure par défaut. L’osque la popup est ouverte sans aucunes heure sélectionnées, la popup des heures scrolle sur l’heure sélectionnée plutôt que l’heure courante. Pour le composant avec date, si on choisit une date pour la première fois, l’heure ajouté sera celle spécifiée plutôt que minuit.

Les libraires mail convertissent les images embarquées en base64 dans le texte HTML en multipart/related afin d’être compatible avec les anciennes versions d’Outlook.

Les rapports Texte et XdocReport peuvent désormais utiliser plusieurs extensions pour Velocity (avec les variables: $locale, $number, $math, $date, $esc, $alternator, $list, $sorter, $iterator),
(Voir doc): https://velocity.apache.org/tools/1.4/generic/index.html

Nouvelles fonctions dans la librairie BarCode : generateQRCode() et generateDataMatrix()

Nouvelle fonction dans la librairie File: fileReadBinary()

Amélioration de la sécurité d’OpenIDConnect via la vérification de jeton JWT reçu (Signature, Dates d’expiration, ClientID, Issuer, Algo). Il est néanmoins possible de désactiver la vérification de la signature du jeton dans la page de configuration.

Possibilité de définir des paramètres supplémentaires, retournés par le serveur OpenIDConnect, selon les possibilités sélectionnées, à récupérer dans le jeu de données prédéfini « Liste des paramètres ». Les paramètres reçus apparaissent dans les logs DEBUG de la plateforme lors d'une connexion OpenID Connect.

Possibilité de modifier la taille max des fichiers des composants upload dynamiquement.